update 'kol_f_edit', added example of connecting the library 'buf2d.obj'

git-svn-id: svn://kolibrios.org@1732 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
IgorA 2010-12-31 17:11:57 +00:00
parent 05210d030e
commit e0fed2fb2e
5 changed files with 98 additions and 49 deletions

Binary file not shown.

View File

@ -137,15 +137,6 @@ macro insert_reg8 reg_name
stdcall [ted_text_add], tedit0,reg_name,2,ted_opt_ed_move_cursor
}
;
macro insert_but_beg
{
stdcall [ted_text_add], tedit0,txt_but_1,txt_but_2-txt_but_1,ted_opt_ed_move_cursor
}
macro insert_but_end
{
stdcall [ted_text_add], tedit0,txt_but_2,txt_but_3-txt_but_2,ted_opt_ed_move_cursor
}
;
macro insert_key_beg
{
@ -200,7 +191,7 @@ popad
; esi - 㪠§ â¥«ì ­  㧥«
align 4
code_gen_obj:
push ebx edx
push eax ebx edx
.beg_iterat:
cmp esi,0
je .find_no
@ -233,27 +224,15 @@ push ebx edx
stdcall insert_text, txt_skob_fo
@@:
insert_nl
stdcall dword[tl_node_poi_get_next_info], esi,tree2
pop esi ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
cmp esi,0
je .end_st
cmp byte[esi+2],bl ;lev
jle .end_st
push bx
mov bl,byte[esi+2]
call code_gen_obj ;४ãàᨢ­ë© ¢ë§®¢ ¤®ç¥à­¨å ®¡ê¥ªâ®¢
pop bx
.end_st:
stdcall get_code_children_objects, esi
call move_next_no_child_objects ;¯à®¯ã᪠¤®ç¥à­¨å ®¡¥ªâ®¢
cmp byte[edx],0
je @f
;¥á«¨ áâàãªâãà  § ¤ ­  ¬ ªà®á®¬
stdcall insert_text, txt_skob_fc
insert_nl
jmp .beg_iterat
@@:
stdcall insert_text,txt_ends
jmp .beg_iterat
.no_struct:
cmp dword[eax],C_TXT
jne @f
@ -270,10 +249,14 @@ push ebx edx
cmp dword[eax],C_WND
jne @f
stdcall get_code_window,eax ;®¡à ¡®âª  ®¡ê¥ªâ 
stdcall get_code_children_objects, esi ;®¡à ¡®âª  ¤®ç¥à­¨å ®¡¥ªâ®¢
call move_next_no_child_objects ;¯à®¯ã᪠¤®ç¥à­¨å ®¡¥ªâ®¢
stdcall insert_text, txt_draw_we ;ª®¤ § ¢¥àè î騩 äã­ªæ¨î à¨á®¢ ­¨ï
@@:
cmp dword[eax],C_ACO
jne @f
stdcall get_code_auto,eax ;®¡à ¡®âª  ®¡ê¥ªâ 
stdcall get_code_auto,esi ;®¡à ¡®âª  ®¡ê¥ªâ 
call move_next_no_child_objects ;¯à®¯ã᪠¤®ç¥à­¨å ®¡¥ªâ®¢
@@:
cmp dword[eax],C_KEY ;ª« ¢¨ âãà 
jne @f
@ -285,7 +268,49 @@ push ebx edx
jmp .beg_iterat
.find_no:
pop edx ebx
pop edx ebx eax
ret
;¢§ïâì ª®¤ë ¤®ç¥à­¨å ®¡ê¥ªâ®¢
align 4
proc get_code_children_objects, p_node:dword
push ebx esi
mov esi,[p_node]
mov bl,byte[esi+2] ;á®å࠭塞 ã஢¥­ì ⥪ã饣® ®¡ê¥ªâ 
stdcall dword[tl_node_poi_get_next_info], esi,tree2
pop esi ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
cmp esi,0 ;¥á«¨ ¤®á⨣«¨ ª®­æ  ᯨ᪠ ®¡ê¥ªâ®¢
je @f
cmp byte[esi+2],bl ;¥á«¨ ã஢¥­ì á«¥¤ãî饣® ®¡ê¥ªâ  ¡®«ìè¥ ¨«¨ à ¢¥­ ⥪ã饬ã
jle @f ;â® ¤®ç¥à­¨å 㧫®¢ ­¥â
mov bl,byte[esi+2]
call code_gen_obj ;४ãàᨢ­ë© ¢ë§®¢ ¤®ç¥à­¨å ®¡ê¥ªâ®¢
@@:
pop esi ebx
ret
endp
;¯à®¯ã᪠¢á¥å ¤®ç¥à­¨å ®¡ê¥ªâ®¢
;input:
; esi - 㪠§ â¥«ì ­  㧥«
;outpet:
; esi - 㪠§ â¥«ì á«¥¤ã騩 ­¥ ¤®ç¥à­¨© (®â­®á¨â¥«ì­® ¢å®¤ï饣®) ­  㧥«
align 4
move_next_no_child_objects:
push eax ebx
mov bl,byte[esi+2] ;á®å࠭塞 ã஢¥­ì ⥪ã饣® ®¡ê¥ªâ 
@@:
stdcall dword[tl_node_poi_get_next_info], esi,tree2
pop eax ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
cmp eax,0 ;¥á«¨ ¤®á⨣«¨ ª®­æ  ᯨ᪠ ®¡ê¥ªâ®¢
je @f
cmp byte[eax+2],bl ;¥á«¨ ã஢¥­ì á«¥¤ãî饣® ®¡ê¥ªâ  ¡®«ìè¥ ¨«¨ à ¢¥­ ⥪ã饬ã
jle @f ;â® ¤®ç¥à­¨å 㧫®¢ ­¥â
mov esi,eax ;¥á«¨ á«¥¤ã騩 㧥« ®ª § «áï ¤®ç¥à­¨¬, ¯¥à¥áâ ¢«ï¥¬ 㪠§ â¥«ì
jmp @b
@@:
pop ebx eax
ret
;¤®¡ ¢«¥­¨¥ ®¡ê¥ªâ  á ¯à®£à ¬­ë¬ ª®¤®¬ (⥪á⮬)
@ -301,10 +326,13 @@ endp
;®¡à ¡®âª  ®¡ê¥ªâ  ᮧ¤ î饣®  ¢â®¬ â¨ç¥ªá¨¥ ª®¤ë
align 4
proc get_code_auto, p_obj:dword
proc get_code_auto, p_node:dword
pushad
insert_nl
mov ebx,dword[p_obj]
mov esi,dword[p_node]
stdcall dword[tl_node_poi_get_data], esi,tree2
pop ebx ;¯®«ãç ¥¬ ¤ ­­ë¥ 㧫 
test_bool_prop ebx,BIT_MOD_ACI
jae @f
mov edx,C_CHB
@ -321,9 +349,13 @@ proc get_code_auto, p_obj:dword
test_bool_prop ebx,BIT_MOD_ABU
jae @f
;ᮧ¤ ­¨¥ ä㭪樨 button
insert_but_beg
stdcall insert_text, txt_but_beg
call get_code_auto_but ;ª®¤ë ¢ë§®¢  ª­®¯®ª
insert_but_end
stdcall insert_text, txt_but_mid
stdcall get_code_children_objects, esi
;ª®­¥æ ä㭪樨 button (ª­®¯ª  id=-1, § ¢¥à襭¨¥ ¯à®£à ¬¬ë)
stdcall insert_text, txt_but_end
call get_code_a_but_fun ;ª®¤ë ä㭪権, ¢ë§ë¢ ¥¬ëå ¯à¨ ­ ¦ â¨¨ ª­®¯®ª
@@:
test_bool_prop ebx,BIT_MOD_ACD
@ -1105,8 +1137,6 @@ proc get_code_window, p_obj:dword
insert_nl
call get_code_draw_obj
stdcall insert_text, txt_draw_we ;ª®¤ § ¢¥àè î騩 äã­ªæ¨î à¨á®¢ ­¨ï
popad
ret
endp
@ -1423,16 +1453,14 @@ txt_cb_b db 13,'check_boxes:',0
txt_cb_e db 'check_boxes_end:',13,0
txt_ebox db ' edit_box',0
txt_editb_draw:
db 9,'stdcall [edit_box_draw], ',0
txt_cbox_draw:
db 9,'stdcall [check_box_draw], ',0
txt_editb_draw db 9,'stdcall [edit_box_draw], ',0
txt_cbox_draw db 9,'stdcall [check_box_draw], ',0
txt_but_1:
db 'align 4',13,'button:',13,9,'mcall 17',13
txt_but_2:
db 9,'cmp ah,1',13,9,'jne still',13,'.exit:',13,9,'mcall -1',13
txt_but_3:
;­ ç «® ä㭪樨 ª­®¯®ª
txt_but_beg db 'align 4',13,'button:',13,9,'mcall 17',13,0
txt_but_mid db 9,'cmp ah,1',13,9,'jne still',13,'.exit:',13,0
;ª®­¥æ ä㭪樨 ª­®¯®ª (§ ¢¥à襭¨¥ ¯à®£à ¬ë)
txt_but_end db 9,'mcall -1',13,0
txt_key_1:
db 'align 4',13,'key:',13,9,'mcall 2',13

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

View File

@ -48,7 +48,7 @@ table
</head>
<body>
<h1>Kol_f_edit версия от 22.12.2010</h1>
<h1>Kol_f_edit версия от 31.12.2010</h1>
<p>Оглавление</p>
<ul>
<li>О программе</li>
@ -61,22 +61,25 @@ table
<li><a href="#obj_code">Asm код</a></li>
<li><a href="#obj_auto">Авто код</a></li>
<li><a href="#obj_libr">Импорт библиотеки</a></li>
<li><a href="#obj_ifun">Функция из библиотеки</a></li>
<li><a href="#obj_incl">Включение файла</a></li>
</ul>
</ul>
<h2>О программе</h2>
<p>Программа для автоматизации создания интерфейса.
Многие функции программы пока еще не сделаны, потому возможности ее практического использования минимальные.
Некоторые из функций программы пока еще не сделаны, потому возможности ее практического использования ограничены.
Лицензия свободная.</p>
<p><img src="about.png"></p>
<p>Внешний вид программы.</p>
<h2><a name="algor">Алгоритм работы с программой</a></h2>
<p>1) Открываем шаблон программы из файла <b>min_prog.ced</b> или <b>box_l.ced</b>
(min_prog.ced - &quot;минимальная&quot; программа, box_l.ced - программа с подключением библиотеки box_lib.obj, планируеться добавление других шаблонов</i>)</p>
<p>1) Открываем шаблон программы из файла с расширением <b>.ced</b>
(min_prog.ced - &quot;минимальная&quot; программа, box_l.ced - программа с подключением библиотеки box_lib.obj,
buf2d.ced - программа с подключением библиотеки buf2d.obj, планируеться добавление других шаблонов</i>)</p>
<p>2) Редактируем объекты в подключенном файле <b>*.ced</b></p>
<p>3) Создаем <b>*.asm</b> код в текстовом окне кнопкой на панели. Сохраняем <b>*.asm</b> код на диск (<i>работоспособность получившегося файла не гарантируется, т. к. многие элементы еще доконца не запрограмированы</i>)</p>
<p>4) Редактируем получившийся <b>*.asm</b> файл любым текстовым редактором</p>
<p>3) Создаем <b>*.asm</b> код в текстовом окне кнопкой на панели. Сохраняем <b>*.asm</b> код на диск (<i>работоспособность получившегося файла не гарантируется, т. к. некоторые из элементов еще доконца не проработаны</i>)</p>
<p>4) Редактируем получившийся <b>*.asm</b> файл любым текстовым редактором. Для этого убираем в начале файла описания структур (т. к. они содержатся в подключаемых файлах <b>.inc</b>) и дописываем пути к подключаемым файлам.</p>
<h2><a name="v_obj">Виды объектов</a></h2>
<p>Програмный код создается на основе свойств объектов, внесенных в файл проэкта. Все объекты внутри програмы представляються структурами вида:</p>
@ -148,7 +151,25 @@ ends</pre>
<li>текст ошибки который появляется если возникли проблемы с импортом функций из библиотеки</li>
</ul>
<p>Для создания програмного кода этого объекта нужен объект <a href="#obj_auto">авто кода</a> с включенной опцией <b>коды элементов</b>.
Этот объект используется вместе с объектами <b>функция из библиотеки</b>, которые должны быть дочерними для него.</p>
Этот объект используется вместе с объектами <a href="#obj_ifun">функция из библиотеки</a>, которые должны быть дочерними для него.</p>
<h3><a name="obj_ifun">Функция из библиотеки</a></h3>
<img src="prop_ifun.png">
<p>Данные объекты служат для создания указателей на функции импортируемые из библиотеки. Содержит параметры:</p>
<ul>
<li>програмное имя функции (то имя каким функция будет называться в пользовательской програме)</li>
<li>импортируемое имя функции (то имя которое записано в библиотеке)</li>
</ul>
<p>В большинстве случаев эти параметры будут совпадать друг с другом.
Эти объекты используется вместе с объектами <a href="#obj_libr">импорт библиотеки</a>, которые должны быть родительскими для них.</p>
<h3><a name="obj_incl">Включение файла</a></h3>
<img src="prop_incl.png">
<p>Объект создания кода подключения файлов, через ключевое слово <b>include</b>. Содержит параметры:</p>
<ul>
<li>имя файла (вместе с путем и одинарными кавычками)</li>
<li>комментарий (используется если пользователю необходимо добавить описание подключаемого файла)</li>
</ul>
<h3></h3>
<p></p>

View File

@ -20,7 +20,7 @@ include 'obj_codes.inc'
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc, dll.Load
hed db 'kol_f_edit 22.12.10',0
hed db 'kol_f_edit 31.12.10',0
sizeof.TreeList equ 20 ;need for element 'tree_list'