forked from KolibriOS/kolibrios
e0fed2fb2e
git-svn-id: svn://kolibrios.org@1732 a494cfbc-eb01-0410-851d-a64ba20cac60
<html> <head> <title>Оглавление</title> <meta http-equiv="content-type" content="text/html; charset=WINDOWS-1251"> <style> body { font-size: 15px; font-family: "Bookman Old Style"; color: black; text-align: justify; } h1 { color: green; font-size: 23px; } h2 { color: green; font-size: 21px; } h3 { color: green; font-size: 19px; } h4 { color: #803f00; font-size: 17px; } i { color: #0099cc; } b { color: #0099cc; } p { text-indent: 1em; margin-top: 3px; margin-bottom: 2px; margin-left: 0px; margin-right: 0px; } ol, ul, dl{ margin-top: 3px; margin-bottom: 2px; } pre { padding: 2px; padding-left: 20px; margin-top: 5px; margin-bottom: 5px; margin-left: 0px; margin-right: 0px; font-family: "Courier New"; font-size: 15px; color: #004000; background-color: #ffd0ff; } table { font-size: 15px; } </style> </head> <body> <h1>Kol_f_edit версия от 31.12.2010</h1> <p>Оглавление</p> <ul> <li>О программе</li> <li><a href="#algor">Алгоритм работы с программой</a></li> <li><a href="#v_obj">Виды объектов</a></li> <ul> <li><a href="#obj_type">Тип даного</a></li> <li><a href="#obj_vari">Переменная</a></li> <li><a href="#obj_stru">Структура</a></li> <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>.ced</b> (min_prog.ced - "минимальная" программа, 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> файл любым текстовым редактором. Для этого убираем в начале файла описания структур (т. к. они содержатся в подключаемых файлах <b>.inc</b>) и дописываем пути к подключаемым файлам.</p> <h2><a name="v_obj">Виды объектов</a></h2> <p>Програмный код создается на основе свойств объектов, внесенных в файл проэкта. Все объекты внутри програмы представляються структурами вида:</p> <pre>struct object id dd ? ;идентификатор объекта txt rb MAX_LEN_OBJ_TXT ;текстовые свойства lvl db 0 clo db 0 typid dd ? ;номер объекта определяющего тип переменной modif dd ? ;битовые свойства ends</pre> <p>В зависимости от вида объекта не все его параметры могут использоваться. Большая часть свойств объекта задается параметрами: <b>txt</b> (текстовые свойства), <b>typid</b> и <b>modif</b> (битовые свойства). Редактирование оъектов совершается через окно свойств объекта. При создании объекта текстовые свойства вносятся в текстовые поля (элементы editbox слевой стороны окна); битовые свойства задаются флажками (находятся справой стороны в нижнем углу окна) а тип объекта выбирается из списка, который доступен только при редактировании переменных (находятся справой стороны в верхнем углу окна).</p> <p>Для открытия окна со свойствами объекта нужно выбрать редактируемый объект и нажать <b>[Enter]</b> или кнопку <img src="property.png"> на панели инструментов.</p> <h3><a name="obj_type">Тип даного</a></h3> <img src="prop_type.png"> <p>Переменные в програмном коде имеют разные типы данных. Этот объект служит для задания типов данных, с которыми в последствии можно связывать объекты переменных. Один объект типа данных может много раз использоваться для задания типов переменных.</p> <h3><a name="obj_vari">Переменная</a></h3> <img src="prop_vari.png"> <p>Объект переменной содержит 3 текстовых свойства: 1) имя переменной, 2) значение по умолчанию, 3) комментарий; и одну ссылку на объект типа данного или объект структуры.</p> <h3><a name="obj_stru">Структура</a></h3> <img src="prop_stru.png"> <p>Объект структуры содержит 2 текстовых свойства: 1) имя структуры, 2) параметры для макроса. Свойство <i>параметры для макроса</i> не обязательно для заполнения. Структура должна содержать в себе переменные. Все объекты переменных структуры должны быть расположены уровнем ниже чем объект структуры, таким образом программа при создании кода определит где находится начало и конец данных структуры.</p> <h3><a name="obj_code">Asm код</a></h3> <img src="prop_code.png"> <p>Объект содержащий програмный код, который вставляется в генерируемую программу. Длина кода ограничивается размером константы MAX_LEN_OBJ_TXT (200 символов). Подобный объект нужен для задания каких-либо готовых пользовательских функций или для выхода из нестандартных заранее не предусмотренных ситуаций. Может возникнуть ситуация, когда через использование других объектов решение задачи может оказаться нецелесообразным, например такой код:</p> <pre>struct p a dd ? b dd ? ends</pre> <p>Можно создать из 3-х обектов: 1-на структура и 2 переменные или обойтись 1-м объектом <i>asm кода</i>.</p> <h3><a name="obj_auto">Авто код</a></h3> <img src="prop_auto.png"> <p>Для програмирования некоторых объектов необходимо написание кода в разных местах программы. Но один объект не может создавать свой код в разных местах. Для решения этой задачи был создан объект <b>авто кода</b>. Он может автоматически создавать коды других объектов. Этот объект содержит текстовое свойство, которое используется как подсказка пользователю, но в програмный код не попадает. Также содержит флаги, от которых зависит какой именно код будет создаваться, вот они:</p> <ul> <li>первоначальные настройки элементов</li> <li>события от мыши</li> <li>коды элементов</li> <li>нажатия на кнопки</li> </ul> <p>Этот объект работает в связке с другими объектами, а сам по себе никакого кода не создает.</p> <h3><a name="obj_libr">Импорт библиотеки</a></h3> <img src="prop_libr.png"> <p>Данный объект служит для создания структуры импорта библиотеки. Содержит параметры:</p> <ul> <li>имя библиотеки</li> <li>путь к системной директории для поиска библиотеки</li> <li>метка используемая при импорте</li> <li>приставка, которая будет добавляться перед именем каждой импортируемой функции</li> <li>текст ошибки который появляется если библиотека не найдена</li> <li>текст ошибки который появляется если возникли проблемы с импортом функций из библиотеки</li> </ul> <p>Для создания програмного кода этого объекта нужен объект <a href="#obj_auto">авто кода</a> с включенной опцией <b>коды элементов</b>. Этот объект используется вместе с объектами <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> <h2>Автор</h2> <p>Игорь А. (IgorA) - разработка программы.</p> </body> </html>