Обновил архив.
Переименовал блок [FUNCTION_CALL] в [CALL]
Добавил не обязательный блок
[GROUP_BLOCK]
При указание этого блока создается кнопка, которая позволяет вставлять Блоки имеющие обозначение {} (В Кибор)
CODE:[GROUP_BLOCK]
START = {
END = }
[END]
После START= идет то что будет означать начало блока.
После END= идет то что будет означать конец блока.
Разделитель - перенос строки.
Указание данного блока дает возможность создавать шаблоны циклов, функций и тд.
Вставленный в виз редактор такой Блок будет иметь свойства изменение размера с помощью мыши и вставки в середину других блоков. Переход в такой блок извне будет запрещен. Выход опционально, указанным в том же блоке GROUP_BLOCK.
С циклов выход возможен. С тела функции нет (хотя в Кибор можно выходить с функции по global goto, поэтому для Кибор с функции в шаблоне можно будет указывать разрешенный выход с тела функции.
Код который будет генерировать такой блок будет обрамлен тем что указано в блоке [GROUP_BLOCK].
Код шаблона цикла
for
CODE:[INTERFACE]
DIALOG, "For", 619, 109;
STATIC, "Имя переменной", 8, 4, 92, 20;
EDIT, 108, 4, 100, 20, int Var;
STATIC, "Начальное значение", 8, 28, 108, 20;
EDIT, 120, 28, 72, 20, int Init;
STATIC, "Условие", 200, 28, 44, 20;
EDIT, 248, 28, 232, 20, int Cond;
STATIC, "Счетчик", 488, 28, 44, 20;
EDIT, 536, 28, 72, 20, int Counter;
BUTTON_OK, "Принять", 400, 56, 100, 20;
BUTTON_CANCEL, "Закрыть", 508, 56, 100, 20;
[END]
[APPEARANCE]
COLOR = 0, 0, 0;
SIZE_X = 28;
SIZE_Y =28;
[END]
[ASSOC_VAR]
Var = N;
Init = 0;
Cond = N<5;
Counter = N++;
cInit = ~Var~=~Init~;
[END]
[GLOBAL_VAR]
int ~Var~;
[END]
[CALL]
(cInit; Cond; Counter)
[END]
[GROUP_BLOCK]
START = {
END = }
[END]
Данный шаблон позволяет указывать
Имя переменной, которая будет объявлена глобально (если отсутствует), это дает возможность создавать вложенные циклы с разными переменными.
Начальную инициализацию переменной.
Код условия.
Код счетчика.
Пример создаваемого кода:
CODE:int N;
int A;
for(N=0; N<5; N++)
{
}
for(A=50; A<=500; A=A+10)
{
}
goto KIB_Exit;
KIB_Exit:;
На данный момент блоки нельзя еще переносить в тело цикла.