diff --git a/programs/develop/kol_f_edit/about.png b/programs/develop/kol_f_edit/about.png index e93eedfb14..8449de35e9 100644 Binary files a/programs/develop/kol_f_edit/about.png and b/programs/develop/kol_f_edit/about.png differ diff --git a/programs/develop/kol_f_edit/box_l.ced b/programs/develop/kol_f_edit/box_l.ced index 6c9953d2e5..47a31916cd 100644 Binary files a/programs/develop/kol_f_edit/box_l.ced and b/programs/develop/kol_f_edit/box_l.ced differ diff --git a/programs/develop/kol_f_edit/build.bat b/programs/develop/kol_f_edit/build.bat index 6e9616e555..d4b774a43d 100644 --- a/programs/develop/kol_f_edit/build.bat +++ b/programs/develop/kol_f_edit/build.bat @@ -1,6 +1,6 @@ if not exist bin mkdir bin -@fasm.exe -m 16384 ced_view.asm bin\ced_view.kex -@kpack bin\ced_view.kex +@fasm.exe -m 16384 kol_f_edit.asm bin\kol_f_edit.kex +@kpack bin\kol_f_edit.kex @fasm.exe -m 16384 ob_o.asm bin\ob_o.opt if not exist bin\tl_sys_16.png @copy tl_sys_16.png bin\tl_sys_16.png diff --git a/programs/develop/kol_f_edit/ced_code_g.inc b/programs/develop/kol_f_edit/ced_code_g.inc index 0c72f62fd2..5170df5758 100644 --- a/programs/develop/kol_f_edit/ced_code_g.inc +++ b/programs/develop/kol_f_edit/ced_code_g.inc @@ -228,6 +228,7 @@ proc get_code_text, p_obj:dword ret endp +;обработка объекта создающего автоматичексие коды align 4 proc get_code_auto, p_obj:dword pushad @@ -251,7 +252,27 @@ proc get_code_auto, p_obj:dword jae @f call get_code_auto_data_el call get_code_auto_data_dop - call get_code_auto_data_libs + + xor edx,edx + mov dl,C_LIB + stdcall find_obj_in_file,edx ;eax - указатель на структуру библиотеки + cmp eax,0 + je @f + stdcall insert_text, txt_head_i + stdcall insert_text, txt_d_poi + insert_nl + stdcall insert_text, txt_head_l + stdcall insert_text, txt_db + stdcall insert_text, txt_str_beg + stdcall insert_text, txt_sys_err + stdcall insert_text, txt_str_end + insert_nl + + call get_code_auto_data_libs_param + stdcall insert_text, txt_ll_start + call get_code_auto_data_libs_struc + stdcall insert_text, txt_ll_end + call get_code_auto_data_libs ;таблицы импорта библиотек @@: insert_nl popad @@ -334,16 +355,12 @@ proc get_code_auto_data_el jl .prop insert_br - ;insert_tab stdcall insert_text, txt_txt mov edx,fp_icon stdcall get_obj_id, ebx,edx - stdcall str_len,edx ;eax = len(fp_icon) - stdcall [ted_text_add], tedit0,edx,eax,ted_opt_ed_move_cursor + stdcall insert_text,edx - ;insert_coma - ;insert_sp stdcall insert_text, txt_mouse_dd insert_nl @@: @@ -360,6 +377,140 @@ proc get_code_auto_data_el ret endp +;данные для библиотек +align 4 +proc get_code_auto_data_libs_param + pushad + insert_nl ;отступ для форматирования + + stdcall dword[tl_node_poi_get_info], 0,tree2 + pop esi + .beg_iterat: + cmp esi,0 + je .find_no + + stdcall dword[tl_node_poi_get_data], esi,tree2 + pop ebx ;получаем данные узла + cmp ebx,0 + je .find_no + + cmp byte[ebx],C_LIB + jne @f + ;0,1,2,3,4,5 - l_nam,s_dir,i_met,... + + stdcall insert_text, txt_sys_dir + ;object code + mov edx,fp_icon + stdcall get_obj_id, ebx,edx + stdcall insert_text,edx + stdcall insert_text,txt_db + ;stdcall insert_text, txt_str_beg + stdcall insert_text_prop, ebx,1 + ;stdcall insert_text, txt_str_end + insert_nl + + stdcall insert_text, txt_lib_name + stdcall insert_text,edx + stdcall insert_text,txt_db + stdcall insert_text, txt_str_beg + stdcall insert_text_prop, ebx,0 + stdcall insert_text, txt_str_end + insert_nl + + stdcall insert_text,txt_err_m_f_lib + stdcall insert_text,edx + stdcall insert_text,txt_db + stdcall insert_text, txt_str_beg + stdcall insert_text_prop, ebx,4 + stdcall insert_text, txt_str_end + insert_nl + + stdcall insert_text,txt_err_m_i_lib + stdcall insert_text,edx + stdcall insert_text,txt_db + stdcall insert_text, txt_str_beg + stdcall insert_text_prop, ebx,5 + stdcall insert_text, txt_str_end + insert_nl + + insert_nl + @@: + + stdcall dword[tl_node_poi_get_next_info], esi,tree2 + pop esi ;переходим к следущему узлу + + jmp .beg_iterat + .find_no: + popad + ret +endp + +;данные для библиотек +align 4 +proc get_code_auto_data_libs_struc + pushad + ;insert_nl ;отступ для форматирования + + stdcall dword[tl_node_poi_get_info], 0,tree2 + pop esi + .beg_iterat: + cmp esi,0 + je .find_no + + stdcall dword[tl_node_poi_get_data], esi,tree2 + pop ebx ;получаем данные узла + cmp ebx,0 + je .find_no + + cmp byte[ebx],C_LIB + jne @f + ;0,1,2,3,4,5 - l_nam,s_dir,i_met,... + + stdcall insert_text, txt_lib + ;object code + mov edx,fp_icon + stdcall get_obj_id, ebx,edx + stdcall insert_text,edx + insert_sp + stdcall insert_text, txt_ll + stdcall insert_text, txt_lib_name + stdcall insert_text,edx + stdcall insert_text,txt_coma + + stdcall insert_text, txt_lib_path + + stdcall insert_text, txt_sys_dir + stdcall insert_text,edx + stdcall insert_text,txt_coma + stdcall insert_text,txt_br + stdcall insert_text,txt_tab + + stdcall insert_text,txt_err_m_f_lib + stdcall insert_text,edx + stdcall insert_text,txt_coma + stdcall insert_text,txt_head_l + stdcall insert_text,txt_coma + + stdcall insert_text_prop, ebx,2 + stdcall insert_text,txt_coma + + stdcall insert_text,txt_err_m_i_lib + stdcall insert_text,edx + stdcall insert_text,txt_coma + stdcall insert_text,txt_head_i + + insert_nl + @@: + + stdcall dword[tl_node_poi_get_next_info], esi,tree2 + pop esi ;переходим к следущему узлу + + jmp .beg_iterat + .find_no: + popad + ret +endp + ;данные для библиотек align 4 proc get_code_auto_data_libs @@ -968,6 +1119,18 @@ txt_draw_wb: db 13,'align 4',13,'draw_window:',13,'pushad',13,9,'mcall 12,1',13,0 txt_draw_we: db 9,'mcall 12,2',13,'popad',13,9,'ret',13,0 +txt_sys_dir db 'system_dir_',0 +txt_lib_name db 'lib_name_',0 +txt_lib_path db ' sys_path, library_path, ',0 +txt_sys_err db '‘Ёб⥬­ п ®иЁЎЄ ',0 +txt_ll_start db 'l_libs_start:',13,0 +txt_lib db 9,'lib_',0 +txt_ll db 'l_libs ',0 +txt_err_m_f_lib db 'err_msg_found_lib_',0 +txt_head_l db 'head_f_l',0 +txt_err_m_i_lib db 'err_msg_import_',0 +txt_head_i db 'head_f_i',0 +txt_ll_end db 'l_libs_end:',13,0 txt_but_create db '0x40000000',0 ;tmp txt_0x33000000 db '0x33000000',0 ;tmp txt_struct db 'struct ',0 @@ -998,8 +1161,7 @@ txt_std_key_ed: db 9,'stdcall [edit_box_key], ',0 txt_incl: db 'include ',0 -txt_ebox: - db ' edit_box',0 +txt_ebox db ' edit_box',0 txt_editb_draw: db 9,'stdcall [edit_box_draw], ',0 txt_cbox_draw: diff --git a/programs/develop/kol_f_edit/ced_wnd_m.inc b/programs/develop/kol_f_edit/ced_wnd_m.inc index d6ca42c96a..2e730613cf 100644 --- a/programs/develop/kol_f_edit/ced_wnd_m.inc +++ b/programs/develop/kol_f_edit/ced_wnd_m.inc @@ -73,16 +73,47 @@ draw_obj_info: .exit_fun: ret +;Ї®¤­Ё¬ Ґ¬ ®ЎкҐЄв ўўҐае Ї® бЇЁбЄг align 4 but_obj_move_up: stdcall [tl_node_move_up], tree2 ret +;®ЇгбЄ Ґ¬ ®ЎкҐЄв ў­Ё§ Ї® бЇЁбЄг align 4 but_obj_move_down: stdcall [tl_node_move_down], tree2 ret +;Є®ЇЁа㥬 ®ЎкҐЄв +align 4 +but_obj_copy: +push ecx esi edi + stdcall [tl_node_get_data], tree2 + pop esi + mov edi,[tree2.data_info] ;¤ ­­лҐ 0-Ј® 㧫 , ЁбЇ®«м§гҐ¬ ¤«п Є®ЇЁа®ў ­Ёп + xor ecx,ecx + mov cx,word[tree2.info_size] + cld + rep movsb +pop edi esi ecx + ret + +;ўбв ў«пҐ¬ ®ЎкҐЄв +align 4 +but_obj_paste: +push eax ebx ecx edi + mov eax,[tree2.data_info] ;¤ ­­лҐ 0-Ј® 㧫 , ЁбЇ®«м§гҐ¬ ¤«п Є®ЇЁа®ў ­Ёп + mov bl,byte[eax] + call find_obj_in_opt + xor ecx,ecx + mov cx,word[edi+obj_opt.img-obj_opt] ;cx - Ё­¤ҐЄб Ј« ў­®© ЁЄ®­ЄЁ ¤®Ў ў«пҐ¬®Ј® ®ЎкҐЄв  + shl ecx,16 + stdcall [tl_node_add], eax, ecx, tree2 ;¤®Ў ў«пҐ¬ ®ЎкҐЄв + stdcall [tl_draw], tree2 +pop edi ecx ebx eax + ret + ;®Ў­®ў«Ґ­ЁҐ ®ЎкҐЄв®ў ў tree2, Ї® §­ зҐ­Ёп¬ ⥪бв®ўле Ї®«Ґ© ;дг­ЄжЁп ®Ўа в­ п Є ¤ ­­®© on_file_object_select align 4 diff --git a/programs/develop/kol_f_edit/icon.bmp b/programs/develop/kol_f_edit/icon.bmp index d25320a50b..5534fe93a9 100644 Binary files a/programs/develop/kol_f_edit/icon.bmp and b/programs/develop/kol_f_edit/icon.bmp differ diff --git a/programs/develop/kol_f_edit/ced_view.asm b/programs/develop/kol_f_edit/kol_f_edit.asm similarity index 94% rename from programs/develop/kol_f_edit/ced_view.asm rename to programs/develop/kol_f_edit/kol_f_edit.asm index bb2d700f44..ee097bf9d6 100644 --- a/programs/develop/kol_f_edit/ced_view.asm +++ b/programs/develop/kol_f_edit/kol_f_edit.asm @@ -19,7 +19,7 @@ include 'strlen.inc' @use_library_mem mem.Alloc,mem.Free,mem.ReAlloc, dll.Load -hed db 'kol_f_edit 17.11.10',0 +hed db 'kol_f_edit 20.11.10',0 sizeof.TreeList equ 20 ;need for element 'tree_list' @@ -140,7 +140,8 @@ fn_font_s1 db 'font6x9.bmp',0 IMAGE_FILE_FONT1_SIZE equ 96*144*3 ;а §¬Ґа д ©«  б 1-¬ бЁб⥬­л¬ иаЁд⮬ fn_icon db 'icon.bmp',0 -bmp_icon rb 0x300*30 +count_main_icons equ 33 ;зЁб«® ЁЄ®­®Є ў д ©«Ґ icon.bmp +bmp_icon rb 0x300*count_main_icons fn_icon_tl_sys db 'tl_sys_16.png',0 TREE_ICON_SYS16_BMP_SIZE equ 256*3*11+54 ;а §¬Ґа bmp д ©«  б бЁб⥬­л¬Ё ЁЄ®­Є ¬Ё @@ -203,7 +204,7 @@ start: mov [run_file_70.Function], 0 mov [run_file_70.Position], 54 mov [run_file_70.Flags], 0 - mov [run_file_70.Count], 0x300*30 + mov [run_file_70.Count], 0x300*count_main_icons mov [run_file_70.Buffer], bmp_icon mov [run_file_70.rezerv], 0 mov [run_file_70.FileName], fp_icon @@ -344,37 +345,39 @@ pushad mov ecx,5*65536+18 mov edx,5 int 0x40 + stdcall draw_icon, 22,231,6 ;22 - open ;button 'Save Project' mov ebx,250*65536+18 mov ecx,5*65536+18 mov edx,6 int 0x40 - stdcall draw_icon, 17,251,6 ;17 - save icon + stdcall draw_icon, 17,251,6 ;17 - save ;button 'Show Constructor' mov ebx,310*65536+18 mov ecx,5*65536+18 mov edx,11 int 0x40 - stdcall draw_icon, 12,311,6 ;12 - window icon + stdcall draw_icon, 12,311,6 ;12 - window ;button 'Show Code' mov ebx,330*65536+18 mov edx,12 int 0x40 - stdcall draw_icon, 11,331,6 ;11 - text icon + stdcall draw_icon, 11,331,6 ;11 - text ;button 'Update Code' mov ebx,350*65536+18 mov edx,13 int 0x40 + stdcall draw_icon, 32,351,6 ;32 - update ;button 'Save Code' mov ebx,370*65536+18 mov edx,14 int 0x40 - stdcall draw_icon, 17,371,6 ;17 - save icon + stdcall draw_icon, 17,371,6 ;17 - save ;button ']P' mov ebx,390*65536+18 @@ -402,17 +405,32 @@ pushad int 0x40 stdcall draw_icon, 24,181,31 ;24 - move down -; 10 30 50 70 90 - - mov eax,4 ;Ї®¤ЇЁбм 'ЋвЄалвм' - mov ebx,232*65536+13 - mov ecx,0x80ffff00 - mov edx,txtOpen + ;button 'Copy' + mov ebx,200*65536+18 + mov ecx,30*65536+18 + mov edx,23 int 0x40 + stdcall draw_icon, 30,201,31 ;30 - copy + + ;button 'Paste' + mov ebx,220*65536+18 + mov ecx,30*65536+18 + mov edx,24 + int 0x40 + stdcall draw_icon, 31,221,31 ;31 - paste + + ;button 'Property' + mov ebx,240*65536+18 + mov ecx,30*65536+18 + mov edx,25 + int 0x40 + stdcall draw_icon, 7,241,31 ;7 - property + +; 10 30 50 70 90 cmp [err_opn],1 jne @f - ;mov eax,4 + mov eax,4 mov ebx,10*65536+35 mov ecx,0x80ff0000 mov edx,txtErrOpen @@ -542,6 +560,18 @@ button: jne @f call but_obj_move_down @@: + cmp ah,23 + jne @f + call but_obj_copy + @@: + cmp ah,24 + jne @f + call but_obj_paste + @@: + cmp ah,25 + jne @f + call on_file_object_select + @@: cmp ah,1 jne still .exit: @@ -777,11 +807,8 @@ push eax ebx ecx pop eax cmp eax,0 je @f - ;mov bl,byte[eax] - ;call find_obj_in_opt xor ecx,ecx mov cx,word[eax+obj_opt.img-obj_opt] ;cx - Ё­¤ҐЄб Ј« ў­®© ЁЄ®­ЄЁ ¤®Ў ў«пҐ¬®Ј® ®ЎкҐЄв  - ;mov cx,word[edi+obj_opt.img-obj_opt] ;cx - Ё­¤ҐЄб Ј« ў­®© ЁЄ®­ЄЁ ¤®Ў ў«пҐ¬®Ј® ®ЎкҐЄв  shl ecx,16 stdcall dword[tl_node_add], eax, ecx, tree2 ;¤®Ў ў«пҐ¬ ®ЎкҐЄв @@: @@ -868,7 +895,6 @@ buf_skin3: db 24 ;+20 bit in pixel show_mode db 0 ;०Ё¬ ¤«п Ї®Є §  ®ЇаҐ¤Ґ«Ґ­­®Ј® ®Є­  -txtOpen db 'Ћв',0 txtErrOpen db 'ЌҐ ­ ©¤Ґ­ д ©«, Їа®ўҐам⥠Їа ўЁ«м­®бвм Ё¬Ґ­Ё',0 txtErrIni1 db 'ЌҐ ®вЄал«бп д ©« б ®ЇжЁп¬Ё',0 err_opn db 0 diff --git a/programs/develop/kol_f_edit/readme.htm b/programs/develop/kol_f_edit/readme.htm index 98f6d00b46..4172eea27f 100644 --- a/programs/develop/kol_f_edit/readme.htm +++ b/programs/develop/kol_f_edit/readme.htm @@ -48,7 +48,7 @@ table -

Kol_f_edit версия от 11.11.2010

+

Kol_f_edit версия от 20.11.2010

О программе

Программа для автоматизации создания интерфейса. Многие функции программы пока еще не сделаны, потому возможности ее практического использования минимальные. @@ -57,8 +57,9 @@ table

Внешний вид программы.

Алгоритм работы с программой

-

1) Открываем шаблон программы из файла min_prog.ced (пока он только один, дальше планируеться добавление других шаблонов)

-

2) Редактируем объекты в файле min_prog.ced (более подробные инструкции по редактированию добавлю когда программа будет готова)

+

1) Открываем шаблон программы из файла min_prog.ced или box_l.ced + (min_prog.ced - "минимальная" программа, box_l.ced - программа с подключением библиотеки box_lib.obj, планируеться добавление других шаблонов)

+

2) Редактируем объекты в подключенном файле *.ced (более подробные инструкции по редактированию добавлю когда программа будет готова)

3) Создаем *.asm код в текстовом окне кнопкой на панели. Сохраняем *.asm код на диск (работоспособность получившегося файла не гарантируется, т. к. многие элементы еще доконца не запрограмированы)

4) Редактируем получившийся *.asm файл любым текстовым редактором