# Как настроить меню программы vkACL.jar

Программа vkACL позволяет пользователю дополнительно настроить меню главного окна для удобства использования готовых ACL программ. Для этой цели стандартно предлагается использовать два раздела стандартного меню "Run/Build-in ACLpro" и "Run/User's ACLpro" по которым запускаются ACL программы "myprograms.acl" и "programs.acl" в папке "pro". Из этих программ можно вызывать любые другие программы используя таблицу кнопок. Но некоторые очень часто используемые программы желательно запускать быстрее, например, по горячей клавише. Сейчас это также возможно.

Ниже написано как настроить меню добавлением новых разделов. Но прежде всего необходимо отметить, что кнопки "Run/File Viewer" и "Run/Image Viewer" способны работать со всеми файлами компьютера. Вторая операция позволяет предварительно просмотреть все картинки на компьютере. Первая операция показывает htm-файлы в собственном браузере, с медиа файлами запускает стандартный проигрыватель, установленный на компьютере, а остальные файлы показывает как текст в собственном редакторе. Также появилась операция запуска любой ACL программы по выбору минуя редактор.

Настройка дополнительного меню программы состоит в редактировании файла "start.acl". Первая строка этого файла содержит 11 полей, разделенных символом вертикальной черты [|]. Восьмое поле (число) указывает сколько дополнительных разделов меню будут выставлены вместе с основными разделами Prog Exec Run. Если это число равно 0, то ничего не нужно и все работает как раньше. Но если оно больше нуля, например N, то в файле "start.acl" необходимо заполнить дополнительно N+1 строку. При этом первые N строк описывают новые разделы меню, а последняя строка указывает все программы, которые будут запускаться по этим разделам меню в порядке очереди.

Прежде чем описывать разделы меню, отмечу роль 10-го поля. В нем стоит число, которое регулирует начальный вертикальный размер окон редактора и файлов помощи. Пусть это число равно K. Тогда вертикальный размер равен 550+100*K. Необходимость в такой модификации была вызвана с появлением маленьких ноутбуков с разрешением по вертикали 600 символов, а также появлением больших мониторов и ноутбуков с очень высоким разрешением. Теперь программу можно насторить на любой компьютер.

Каждая строка описания разделов меню имеет структуру из 5 полей, то есть сплошных текстов без пробелов, разделенных пробелами. Первое поле - это имя раздела меню. Второе поле - это числовой код клавиши, по которой можно открыть данный раздел меню, нажимая ее при нажатой клавише [Alt]. Коды клавиш будут описаны далее в этой статье. Третье поле - это список всех подразделов данного раздела меню, разделенных символом вертикальной черты [|]. Имена подразделов не должны содержать пробелы (вместо пробелов можно использовать символ [-] или [_]). Четвертое поле - это опять список числовых кодов клавиш, разделенных символом вертикальной черты [|]. Эти клавиши можно нажимать для открытия подразделов меню при уже открытом разделе меню. И наконец пятое поле - это снова список числовых кодов клавиш, разделенных символом вертикальной черты [|]. Но эти клавиши называются ускорителями. Они позволяют стразу открыть подраздел меню при их нажатии при нажатой клавише [Alt].
Во избежание недоразумений коды разделов меню и коды клавиш ускорителей всех подразделов меню должны быть уникальными и не совпадать друг с другом. При этом надо помнить, что все числовые клавиши 0 1 ... 9, а также буквенные клавиши для букв B С E F H I M O P R S U V W уже используются в стандартном меню. Поэтому для дополнительного меню их использовать нельзя.
В последней N+1 строке нужно указать все ACL программы, которые будут запускаться. Для каждой программы нужно указать два поля. Первое поле - это имя папки программы относительно интерпретатора. Лучше не записывать программы в головную папку самого интерпретатора, так что этот случай я даже не обсуждаю. Второе поле - это имя самой программы вместе с расширением. При этом необязательно расширение .acl. Это только рекомендация для удобства. Вложенные папки должны описываться символов [/] как в Java, а не как в Windows. Таким образом полное число таких полей должно быть в 2 раза больше, чем число подразделов меню. Любая ошибка ведет к фатальному исходу незапуска программы, так что будьте внимательны.
Коды клавиш, используемые в Java, очень легко определять, потому что большинство клавиш имеет коды, совпадающие с ASCII кодами символов, которые они вводят. То есть [0]=48, ..., [9]=57, [A]=65, ..., [Z]=90. Другие клавиши имеют коды, совпадающие с ASCII кодами знаков нижнего регистра: [,]=44, [-]=45, [.]=46, [/]=47, [;]=59, [=]=61, [[]=91, [\]=92, []]=93. Служебные клавиши имеют следующие коды: [Bksp]=8, [Tab]=9, [Enter]=10, [Shift]=16, [Ctrl]=17, [Alt]=18, [CapsLock]=20, [Esc]=27, [Space]=32, [PgUp]=33, [PgDn]=34, [End]=35, [Home]=36. Стрелки имеют следующие коды: влево 37, вверх 38, вправо 39, вниз 40. Функциональные клавиши [F1]=112, ..., [F12]=123. Наконец другие клавиши имеют специальные коды: [Ins]=155, [Del]=127, [']=222, [`]=192. Служебными клавишами лучше не пользоваться. Остальные клавиши можно проверить эмпирически. Следует также помнить, что клавиша [Tab] стандартно используется для переключения фокуса с одного окна на другое и между разделами меню. Поэтому ее лучше тоже не использовать.