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 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 macro insert_key_beg
{ {
@ -200,7 +191,7 @@ popad
; esi - 㪠§ â¥«ì ­  㧥« ; esi - 㪠§ â¥«ì ­  㧥«
align 4 align 4
code_gen_obj: code_gen_obj:
push ebx edx push eax ebx edx
.beg_iterat: .beg_iterat:
cmp esi,0 cmp esi,0
je .find_no je .find_no
@ -233,27 +224,15 @@ push ebx edx
stdcall insert_text, txt_skob_fo stdcall insert_text, txt_skob_fo
@@: @@:
insert_nl insert_nl
stdcall get_code_children_objects, esi
stdcall dword[tl_node_poi_get_next_info], esi,tree2 call move_next_no_child_objects ;¯à®¯ã᪠¤®ç¥à­¨å ®¡¥ªâ®¢
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:
cmp byte[edx],0 cmp byte[edx],0
je @f je @f
;¥á«¨ áâàãªâãà  § ¤ ­  ¬ ªà®á®¬ ;¥á«¨ áâàãªâãà  § ¤ ­  ¬ ªà®á®¬
stdcall insert_text, txt_skob_fc stdcall insert_text, txt_skob_fc
insert_nl insert_nl
jmp .beg_iterat
@@: @@:
stdcall insert_text,txt_ends stdcall insert_text,txt_ends
jmp .beg_iterat
.no_struct: .no_struct:
cmp dword[eax],C_TXT cmp dword[eax],C_TXT
jne @f jne @f
@ -270,10 +249,14 @@ push ebx edx
cmp dword[eax],C_WND cmp dword[eax],C_WND
jne @f jne @f
stdcall get_code_window,eax ;®¡à ¡®âª  ®¡ê¥ªâ  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 cmp dword[eax],C_ACO
jne @f jne @f
stdcall get_code_auto,eax ;®¡à ¡®âª  ®¡ê¥ªâ  stdcall get_code_auto,esi ;®¡à ¡®âª  ®¡ê¥ªâ 
call move_next_no_child_objects ;¯à®¯ã᪠¤®ç¥à­¨å ®¡¥ªâ®¢
@@: @@:
cmp dword[eax],C_KEY ;ª« ¢¨ âãà  cmp dword[eax],C_KEY ;ª« ¢¨ âãà 
jne @f jne @f
@ -285,7 +268,49 @@ push ebx edx
jmp .beg_iterat jmp .beg_iterat
.find_no: .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 ret
;¤®¡ ¢«¥­¨¥ ®¡ê¥ªâ  á ¯à®£à ¬­ë¬ ª®¤®¬ (⥪á⮬) ;¤®¡ ¢«¥­¨¥ ®¡ê¥ªâ  á ¯à®£à ¬­ë¬ ª®¤®¬ (⥪á⮬)
@ -301,10 +326,13 @@ endp
;®¡à ¡®âª  ®¡ê¥ªâ  ᮧ¤ î饣®  ¢â®¬ â¨ç¥ªá¨¥ ª®¤ë ;®¡à ¡®âª  ®¡ê¥ªâ  ᮧ¤ î饣®  ¢â®¬ â¨ç¥ªá¨¥ ª®¤ë
align 4 align 4
proc get_code_auto, p_obj:dword proc get_code_auto, p_node:dword
pushad pushad
insert_nl 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 test_bool_prop ebx,BIT_MOD_ACI
jae @f jae @f
mov edx,C_CHB mov edx,C_CHB
@ -321,9 +349,13 @@ proc get_code_auto, p_obj:dword
test_bool_prop ebx,BIT_MOD_ABU test_bool_prop ebx,BIT_MOD_ABU
jae @f jae @f
;ᮧ¤ ­¨¥ ä㭪樨 button ;ᮧ¤ ­¨¥ ä㭪樨 button
insert_but_beg stdcall insert_text, txt_but_beg
call get_code_auto_but ;ª®¤ë ¢ë§®¢  ª­®¯®ª 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 ;ª®¤ë ä㭪権, ¢ë§ë¢ ¥¬ëå ¯à¨ ­ ¦ â¨¨ ª­®¯®ª call get_code_a_but_fun ;ª®¤ë ä㭪権, ¢ë§ë¢ ¥¬ëå ¯à¨ ­ ¦ â¨¨ ª­®¯®ª
@@: @@:
test_bool_prop ebx,BIT_MOD_ACD test_bool_prop ebx,BIT_MOD_ACD
@ -1105,8 +1137,6 @@ proc get_code_window, p_obj:dword
insert_nl insert_nl
call get_code_draw_obj call get_code_draw_obj
stdcall insert_text, txt_draw_we ;ª®¤ § ¢¥àè î騩 äã­ªæ¨î à¨á®¢ ­¨ï
popad popad
ret ret
endp endp
@ -1423,16 +1453,14 @@ txt_cb_b db 13,'check_boxes:',0
txt_cb_e db 'check_boxes_end:',13,0 txt_cb_e db 'check_boxes_end:',13,0
txt_ebox db ' edit_box',0 txt_ebox db ' edit_box',0
txt_editb_draw: txt_editb_draw db 9,'stdcall [edit_box_draw], ',0
db 9,'stdcall [edit_box_draw], ',0 txt_cbox_draw db 9,'stdcall [check_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_beg db 'align 4',13,'button:',13,9,'mcall 17',13,0
txt_but_2: txt_but_mid db 9,'cmp ah,1',13,9,'jne still',13,'.exit:',13,0
db 9,'cmp ah,1',13,9,'jne still',13,'.exit:',13,9,'mcall -1',13 ;ª®­¥æ ä㭪樨 ª­®¯®ª (§ ¢¥à襭¨¥ ¯à®£à ¬ë)
txt_but_3: txt_but_end db 9,'mcall -1',13,0
txt_key_1: txt_key_1:
db 'align 4',13,'key:',13,9,'mcall 2',13 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> </head>
<body> <body>
<h1>Kol_f_edit версия от 22.12.2010</h1> <h1>Kol_f_edit версия от 31.12.2010</h1>
<p>Оглавление</p> <p>Оглавление</p>
<ul> <ul>
<li>О программе</li> <li>О программе</li>
@ -61,22 +61,25 @@ table
<li><a href="#obj_code">Asm код</a></li> <li><a href="#obj_code">Asm код</a></li>
<li><a href="#obj_auto">Авто код</a></li> <li><a href="#obj_auto">Авто код</a></li>
<li><a href="#obj_libr">Импорт библиотеки</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>
</ul> </ul>
<h2>О программе</h2> <h2>О программе</h2>
<p>Программа для автоматизации создания интерфейса. <p>Программа для автоматизации создания интерфейса.
Многие функции программы пока еще не сделаны, потому возможности ее практического использования минимальные. Некоторые из функций программы пока еще не сделаны, потому возможности ее практического использования ограничены.
Лицензия свободная.</p> Лицензия свободная.</p>
<p><img src="about.png"></p> <p><img src="about.png"></p>
<p>Внешний вид программы.</p> <p>Внешний вид программы.</p>
<h2><a name="algor">Алгоритм работы с программой</a></h2> <h2><a name="algor">Алгоритм работы с программой</a></h2>
<p>1) Открываем шаблон программы из файла <b>min_prog.ced</b> или <b>box_l.ced</b> <p>1) Открываем шаблон программы из файла с расширением <b>.ced</b>
(min_prog.ced - &quot;минимальная&quot; программа, box_l.ced - программа с подключением библиотеки box_lib.obj, планируеться добавление других шаблонов</i>)</p> (min_prog.ced - &quot;минимальная&quot; программа, box_l.ced - программа с подключением библиотеки box_lib.obj,
buf2d.ced - программа с подключением библиотеки buf2d.obj, планируеться добавление других шаблонов</i>)</p>
<p>2) Редактируем объекты в подключенном файле <b>*.ced</b></p> <p>2) Редактируем объекты в подключенном файле <b>*.ced</b></p>
<p>3) Создаем <b>*.asm</b> код в текстовом окне кнопкой на панели. Сохраняем <b>*.asm</b> код на диск (<i>работоспособность получившегося файла не гарантируется, т. к. многие элементы еще доконца не запрограмированы</i>)</p> <p>3) Создаем <b>*.asm</b> код в текстовом окне кнопкой на панели. Сохраняем <b>*.asm</b> код на диск (<i>работоспособность получившегося файла не гарантируется, т. к. некоторые из элементов еще доконца не проработаны</i>)</p>
<p>4) Редактируем получившийся <b>*.asm</b> файл любым текстовым редактором</p> <p>4) Редактируем получившийся <b>*.asm</b> файл любым текстовым редактором. Для этого убираем в начале файла описания структур (т. к. они содержатся в подключаемых файлах <b>.inc</b>) и дописываем пути к подключаемым файлам.</p>
<h2><a name="v_obj">Виды объектов</a></h2> <h2><a name="v_obj">Виды объектов</a></h2>
<p>Програмный код создается на основе свойств объектов, внесенных в файл проэкта. Все объекты внутри програмы представляються структурами вида:</p> <p>Програмный код создается на основе свойств объектов, внесенных в файл проэкта. Все объекты внутри програмы представляються структурами вида:</p>
@ -148,7 +151,25 @@ ends</pre>
<li>текст ошибки который появляется если возникли проблемы с импортом функций из библиотеки</li> <li>текст ошибки который появляется если возникли проблемы с импортом функций из библиотеки</li>
</ul> </ul>
<p>Для создания програмного кода этого объекта нужен объект <a href="#obj_auto">авто кода</a> с включенной опцией <b>коды элементов</b>. <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> <h3></h3>
<p></p> <p></p>

View File

@ -20,7 +20,7 @@ include 'obj_codes.inc'
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc, dll.Load @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' sizeof.TreeList equ 20 ;need for element 'tree_list'