ACLpro.jar, версия 7.8.28 и выше,
проигрыватель ACL-программ
[Download aclpro-jar.zip 169 Kб]
Общие вопросы
Здесь представлена Java-программа, которая является чистым интерпретатором языка ACL, то есть
она выполняет одну ACL-программу, но не имеет встроенных средств отладки и описания языка.
Интерпретатор не содержит java-классы библиотеки "iText", обеспечивающие работу с PDF-файлами,
то есть соответствует короткой версии. Эта программа обладает рядом дополнительных свойств,
позволяющих настроить ее под любую конкретную задачу и представить как самостоятельную
Java-программу, в которой использование языка ACL никак себя не проявляет. При этом пользователи
такой программы могут сосредоточиться на конкретных проблемах выполнения своей работы и не
заниматься изучением языка ACL. Хотя, знание каких-то общих свойств языка все же полезно и
может пригодиться. В принципе, написание ACL-программы для проигрывателя и ее отладка вполне
возможны. Для этого нужно использовать внешнее описание языка ACL и внешний редактор. Ошибки
интерпретатор показывает. Но предварительную отладку программ все же лучше делать с помощью
интегральной среды "vkACL.jar". Ниже в этой статье описано как настроить проигрыватель и как
нужно написать ACL-программу, чтобы она правильно взаимодействовала с проигрывателем.
Что касается общих вопросов использования Java-программ, то об этом читайте в статье про vkACL.jar.
Во-первых, предлагаемый проигрыватель ACLpro.jar - это уже готовая программа.
Ее можно запустить и она выполнит определенную работу. Более того, ее можно
переименовать (сохраняя расширение jar для возможности автоматического запуска). Важно помнить,
что любой jar-файл - это нормальный zip-архив Java-классов, дополненный указателем на головной
класс. В этот архив также можно записывать и другие файлы и даже сложную структуру папок. На
первом этапе работы программа ACLpro.jar вынимает из себя файл "prog.acl". Она способна это
делать даже если сам файл был переименован, так как умеет узнавать свое новое название. Но при
этом существенно, чтобы в данной папке был только один jar-файл. Дополнительные jar-файлы, если их
использование необходимо, надо помещать во внутренние папки. Другая тонкость - файл "prog.acl"
вынимается лишь в том случае, если он исходно отсутствует в головной в папке с jar-программой. Если же
такой файл уже существует, то будет использоваться именно он, а внутренний файл игнорируется.
Итак, в тот момент, когда jar-программа обнаружила файл "prog.acl", она начинает считывать
информацию, которая в нем должна быть записана, чтобы сформировать размеры и меню головного окна
программы. Для этого в начале файла "prog.acl" должен быть записан четкий и
правильный протокол создания головного окна. Структура протокола описана ниже. Здесь же
рассмотрены общие вопросы организации ACL-программы "prog.acl". После того, как головное окно
программы выставлено, интерпретатор запускает на исполнение ACL-программу "prog.acl" предопределяя
переменную [&] и давая ей значение 100. Поэтому в программе "prog.acl" должна быть записана
некоторая процедура, которая выполняется по коду 100. Эта процедура может делать какие-либо
первоначальные операции. Далее программа ждет действий пользователя. Выбирая любую кнопку меню
головного окна, пользователь тем самым запускает интерпретатор каждый раз на исполнение все той
же ACL-программы "prog.acl", но при этом переменная [&] получает значение номера выбранной кнопки
меню. Номера кнопок меню считаются слева направо и сверху вниз. То есть сначала рассматривается левый
раздел меню. В нем все кнопки сверху вниз получают номера 1,2,.... Затем рассматривается следующий
раздел, правее левого и в нем номера опций последовательно возрастают при движении сверху вниз
и так далее. Последний раздел меню "About" приписывается автоматически и его разделы автоматически
выполняются независимо от программы "prog.acl". В новой версии проигрывателя по этому разделу
меню выполняется ACL-программа "person.aba", написанная мной. Таким образом, ACL-программа
"prog.acl" должна иметь набор процедур, которые выполняются при выборе определенных кнопок меню
и одну процедуру с номером 100 для самого начала.
Удобно одну кнопку назвать "Exit" и записать в нее команду закрытия Java-проигрывателя.
то есть #exit. При этом можно предварительно уничтожить все файлы, которые желательно уничтожить,
для того, чтобы их снова вытащить из архива программы при следующем запуске. Это можно делать, а
можно и не делать - все зависит от структуры программы и желания представить программу одним
файлом. Очень хорошо отлаженную ACL-программу желательно прятать от пользователя. Но с другой
стороны, открытый файл "prog.acl" позволяет использовать разные программы без перезаписи
jar-файла проигрывателя. Это удобно, например, при отладке. При этом также исходный проигрыватель
"ACLpro.jar" можно прямо использовать с различными наборами файлов ACL-программ. Запускать
ACL-программы непосредственно по расширению при такой организации не получается, так как головной
считается папка интерпретатора, а не ACL-программы.
Структура протокола главного окна
Протокол главного окна должен быть набит в первых строках файла "prog.acl" и не содержать
знака [#], так как он воспринимается интерпретатором как комментарий.
1-я строка должна содержать заголовок программы, показываемый в титульной строке главного окна.
2-я строка содержит 6 полей, разделенных знаком "|". В каждом из 6-ти полей должно быть набито
по одному числу - всего 6 чисел: x,y,w,h,tw,th где
x,y - сдвиг центра окна из центра экрана,
w,h - ширина и высота окна в пикселах экрана
tw,th - ширина и высота окна терминала
Если ширина и высота окна заданы слишком большими (больше, чем размеры экран), то окно принимает размеры
экрана за вычетом нижней строки с иконками ОС.
3-я строка содержит одно число N - число устанавливаемых разделов меню
4-я строка содержит имя первого раздела меню и его мнемонический код, то есть номер клавиши, по которой
меню вызывается с клавиатуры (через Alt). Таблица номеров клавиш прилагается вместе с программой.
5-я строка содержит список имен всех кнопок первого раздела меню, разделенных символом "|"
6-я строка содержит список имен-меток каждой кнопки, разделенных символом "|". В отличие от первых
имен, эти метки должны быть уникальными для всех опций всех разделов меню и ни разу не повторяться.
Кроме того, имена "pppp" и "llll" зарезервированы и не могут быть использованы.
7-я строка содержит числа, разделенные пробелами, парами для каждой кнопки первого раздела меню.
Первое число пары есть мнемонический код раздела, то есть номер клавиши по которой меню вызывается
с помощью клавиатуры (но теперь без Alt). Второе число пары есть код-ускоритель, то есть опять номер
клавиши, по которой данная кнопка меню вызывается с помощью клавиатуры непосредственно (через Alt).
Вторые номера должны быть уникальными для каждой кнопки всех разделов меню и не могут повторяться.
Число имен в строках 5 и 6 должно быть одинаковым, а в строке 7 чисел должно быть в 2 раза больше.
(8, 9, 10, 11)
(12, 13, 14, 15)
....
последующие строки имеют такую же структуру как (4, 5, 6, 7) и содержат такую же информацию для
каждого последующего раздела меню. Номера клавиш F1 и F2 для ускорителей зарезервированы и не могут
использоваться. Должно быть ровно N таких структурных единиц.
Числовые коды клавиш приведены в файле "keycodes.txt"
Пример и как им воспользоваться
Пример файла "prog.acl" с правильно заданной структурой протокола и процедур выполнения находится
в архиве файла "ACLpro.jar". Чтобы посмотреть этот файл есть несколько способов. Во-первых,
можно вынуть его их архива, используя WinZip или Windows Commander. Я пользуюсь последним. При этом
разумно просто скопировать файл в новый с расширением zip. Второй способ состоит в том, чтобы
запустить программу на исполнение и не закрывая ее (пока файл еще не уничтожен, скопировать
файл с другим именем). Важно помнить, что в проигрывателе нельзя непосредственно использовать
программу, написанную и отлаженную с помощью "vkACL.jar". Ее надо сначала снабдить хоть каким-то
протоколом и разбить на процедуры по опциям меню. Но можно запускать всю программу сразу по коду 100,
когда меню вообще не используется. Хотя это не так красиво.
Если будут проблемы, пишите мне в
Гостевую книгу
или на e-mail адрес vkacl@yandex.ru.
28 августа 2007 года
[ НАВЕРХ ]