FvwmScript - модуль для построения графического интерфейса пользователя
FvwmScript должен вызываться оконным менеджером Fvwm. Он не будет работать при вызове из командной строки.
FvwmScript - это модуль, которые позволяет строить графические приложения такие как параметры desktop'а, панель кнопок с всплывающим меню, модальные диалоги и т.д. При старте FvwmScript читает содержащий сценарий файл, который задается ему в командной строке. Этот сценарий не включается в конфигурационный файл Fvwm.
FvwmScript может быть вызван из файла .fvwmrc командой`Module FvwmScript имя_сценария'. Все сценарии, использемые FvwmScript, должны находится в каталоге, который задается в файле .fvwmrc строкой вида: `*FvwmScriptPath путь_каталога_с_сценариями'. Кроме того при вызове модуля FvwmScript при инициализации Fvwm или из меню или по горячей клавише, Fvwm будет искать модуль FvwmScript в каталоге, указанном в параметре ModulePath конфигурационного файла .fvwmrc.
Убедитесь, что вы правильно определили ModulePath.
FvwmScript использует свой собственный язык программирования. Его сценарий состоит из четырех частей. Заголовок содержит общие характеристики окна и свойства по умолчанию для всех элементов управления (widgets). Вторая часть содержит инструкции, которые выполняются при старте сценария. Третья часть содержит описания периодических задач, которые выполняются раз в секунду. Последняя, четвертая, часть содержит описания элементов управления. Можно задавать элементы управления одиннадцати различных типов: текстовые метки, однострочные поля ввода, checkbox'ы, radio button'ы (т.е. кнопки с зависимой и независимой фиксацией), горизонтальные и вертикальные полосы прокрутки, четырехугольники, всплывающие меню, уменьшенные окна и миниатюрные полосы прокрутки.
Заголовок имеет следующий синтаксис:
Эта опция устанавливает заголовок окна.
Эта опция устанавливает размер окна. ширина и высота - числовые значения.
Эта опция задает положение окна. x и y - числовые значения.
Эта опция устанавливает цвет фона по умолчанию для всех элементов управления.
Эта опция устанавливает цвет выделения по умолчанию для всех элементов управления.
Эта опция устанавливает цвет тени для всех элементов управления.
Эта опция устанавливает шрифт текста по умолчанию для всех элементов управления.
Эта часть содержит инструкции, которые будут выполнены при старте. Например:
Init Begin Do "Exec cat tada.voc > /dev/dsp" WarpPointer 1 Set $ToDo="Restart" End
Эти инструкции используются для проигрывания звука, перемещении указателя на элемент управления с номером 1 и для инициализации переменной $ToDo значением "Restart" при каждом старте сценария.
Эта часть сценария содержит несколько инструкций, которые выполняются один раз в секунду. Например:
Periodic Task Begin If (RemainderOfDiv (GetTime) 10)==0 Then Do {Exec xcalc} End
Этот пример показывает, как вызывать xcalc каждые 10 секунд.
Вторая часть сценария содержит описание для каждого элемента управления, которое будет затем использоваться в программе. Описание элемента состоит из двух частей. Первая часть описывает начальные свойства, а вторая часть содержит инструкции, которые будут выполнены при получении сообщения. Все элементы могут посылать и принимать сообщения, которые идентифицируются по номеру. При выборе элемента управления ему посылается сообщение "UserAction". Ниже приведен синтаксис описаний:
Опция `Flags' задается в том случае, если элемент должен быть невидимым или текст на нем должен быть выведен в плоском (не трехмерном) исполнении.
Main Case Message of SingleClic: Begin &035; список инструкций, которые будут &035; выполнены, когда виджет принимает &035; сообщение "SingleClic". Это сообщение &035; генерируется пользователем. End 1: Begin &035; список инструкций, которые будут выполнены &035; когда виджет принимает сообщение 1 End End
Имеется пятнадцать типов элементов управления.
Отображает иконку и/или строку.
Строка для отображения.
Иконка для отображения.
Отображает кнопку с иконкой и/или строкой.
Это строка которая имеет следующий синтаксис:
{Заголовок кнопки|Опция 1|Опция 2|Опция 3|...|Опция N}."Опция 1|Опция 2|...|Опция N" - это всплывающее меню, которое отображается при нажатии правой кнопки мыши.
Иконка для отображения.
Отображает radio button вместе со строкой. </p>
Title: заголовок radio button.
Value: если Value равно 1, то бокс проверяется, в других случаях нет.
CheckBox: Отображает check box вместе со строкой.
Title: заголовок для check box.
Value: если Value равно 1, то бокс проверяется, в других случаях нет.
TextField: Отображает поле ввода текста. Эта полоса может быть использована для редактирования одной строки. <p> Title: текстовое содержимое поля.
Value: позиция указателя вставки.
HScrollBar: Отображает горизонтальную полосу прокрутки.
Value: позиция бегунка.
MaxValue: верхнее предельное значение.
MinValue: нижнее предельное значение.
VScrollBar: Отображает вертикальную полосу прокрутки.
Value: позиция бегунка.
MaxValue: верхнее предельное значение.
MinValue: нижнее предельное значение.
MiniScrollBar: Отображает очень маленькую вертикальную полосу прокрутки.
Value: позиция бегунка.
MaxValue: верхнее предельное значение.
MinValue: нижнее предельное значение.
Rectangle: Отображает четырехугольник. Этот тип элемента управления может использоваться для оформления окна. <p> SwallowExec: Этот тип элемента управления заставляет FvwmScript вызвать процесс и захватить первое окно, чье имя или ресурс равны Title, и отобразить его в окне сценария. <p> Title: задает имя окна, которое будет захвачено и отображено в окне сценария.
SwallowExec: задает командную строку для запуска вызываемого процесса. Модули также могут быть обработаны таким же образом.
Value: задает видимый борждюр. Возможны значения: -1, 0, 1.
PopupMenu: Отображает всплывающее меню.
Value: задает какая опция выбирается.
Title: заголовок имеет следующий синтакс: {Опция 1|Опция 2|...|Опция N}. "Опция 1|Опция 2|...|Опция N" это всплывающее меню, которое отображается, при нажатии кнопки мыши.
HDipstick: Отображает специальную полоску (dipstick). Этот виджет может использоваться для отображения используемого пространства на диске. <p> Value: задает текущую величину dipstick.
MinValue: задает минимальное значение dipstick.
MaxValue: задает максимальное значение dipstick.
VDipstick: Отображает вертикальную dipstick.
Value: задает текущую величину dipstick.
MinValue: задает минимальное значение dipstick.
MaxValue: задает максимальное значение dipstick.
List: Отображает список. Список дает пользователю возможность выбора между несколькими опциями. <p> Value: определяет какая опция выбирается.
Title: заголовок содержит опции списка. Синтакс заголовка следующий: {Опция 1|Опция 2|...|Опция N}. Все меню отображаются вверху окна.
Menu: Отображает меню которое позволяет пользователю выбрать опцию. <p> Value: определяет какая опция выбирается.
Title: заголовок содержит опции меню. Синтакс заголовка следующий: {Опция 1|Опция 2|...|Опция N}.
Здесь описываются все инструкции.
HideWidget id : спрятать виджет с номером id.
ShowWidget id: показать виджет с номером id.
ChangeValue id1 id2: установить значение виджета с номерами от id1 до id2. <p> ChangeMaxValue id1 id2: установить максимальное значение виджета с номерами от id1 до id2.
ChangeMinValue id1 id2: установить минимальное значение виджета с номерами от id1 до id2.
ChangeTitle id1 id2: установить заголовок виджета с номерами от id1 до id2.
ChangeIcon id1 id2: установить иконку виджета с номерами от id1 до id2.
ChangeForeColor id1 {color}: установить цвет переднего плана для виджета с номерами от id1 до {color}.
ChangeBackColor id1 {color}: установить цвет фона для виджета с номерами от id1 до {color}.
ChangePosition id1 x y: переместить виджет с номером id1 в позицию (x,y).
ChangeSize id1 width height: установить размер виджета с номером id1 в (width,height).
ChangeFont id1 newfont: установить фонт для виджета с номером id1 в newfont.
WarpPointer id: поместить указатель мыши в виджет с номером id.
WriteToFile filename {str1} {str2} ...: записать в файл filename строку, которая является результатом слияния аргументов str1, str2, ...
Do {str1} {str2} ...: выполнить команду которая является результатом слияния аргументов str1, str2, ...
Set $var={str1} {str2} ...: слить все
аргумент в строку и установить присвоить переменной $var значение строки.
Quit: выйти из программы.
SendSignal id1 id2: послать сообщение с номером id2 в виджет id1.
SendToScript id_script {str11} {str2} ...: послать сообщение в сценарий id_script. Это сообщение является результатом слияния str1, str2...
Большинство команд используют аргументы. Имеется два вида аргументов: числа и строки. Численный аргумент может принимать значение от -32000 до +32000. Строка всегда заключена в скобки. Переменные всегда начинаются с символа "$" и могут содержать и числа и строки.
Все функции используются как аргументы. Функции могут возвращать как строки так и числа. Синтаксис:
(function argument1 argument2 ...)
Ниже приводится полный список аргументов:
(GetTitle id): возвращает заголовок виджета с номером id.
(GetValue id): возвращает текущее значение виджета с номером id.
(GetOutput {str} int1 int2): выполняет команду str, захватывает стандартный вывод и возвращает слово, которое есть в строке int1 и которое встречается в int2. Если int2 равно -1, то GetOutput возвращает полную строку."
(NumToHex int): возвращает шестнадцатиричное значение int.
(HexToNum {str}): возвращает десятичное значение str, str должно быть шестнадцатиричным значением."
(Add int1 int2): возвращает результат (int1+int2).
(Mult int1 int2): возвращает результат (int1*int2).
(Div int1 int2): возвращает результат (int1/int2).
(StrCopy {str} int1 int2): возвращает подстроку, которая находится в строке str между позициями int1 и int2. Например, (StrCopy {Hello} 1 2) возвращает {He}"
(LaunchScript {str}): эта функция запускает сценарий с именем str и возвращает идентификационный номер. Этот номер необходим при использовании таких функций как SendToScript и ReceivFromScript. Строка str содержит имя сценария и несколько аргументов."
(GetScriptArgument {int}): эта функция возвращает аргумент-сценарий,
использующийся в функции LaunchScript. Если int равен нулю, GetScriptArgument возвращает имя данного сценария."
(GetScriptFather): эта функция возвращает идентификационный номер
сценария-родителя."
(ReceivFromScript {int}): эта функция возвращает сообщение посланное сценарию с номером int."
(RemainderOfDiv {int1 int2}): эта функция возвращает остаток
от деления (int1/int2)."
(GetTime): эта функция возвращает время в секундах.
<descrip>
Имееется три вида циклов по условию. Инструкция "If-Then-Else" имеет следующий синтакс:
If $ToDo="={Open" xcalc} Then Do {Exec xcalc &} # список инструкций Else Begin Do {Exec killall xcalc &} # список инструкций Do {Exec echo xcalc killed > /dev/console} End
Вторая часть "Else-Begin-End" необязательна. Если цикл содержит только одну инструкцию, то Begin и End могут быть опушены. Инструкция "While-Do" имеет следующий синтакс:
While $i<5 Do Begin Set $i="(Add" i 1) # список инструкций End
Две строки могут сравниваться оператором "==", а два числа могут сравниваться операторами "<", "<=", "==", ">=", ">". Цикл "For-Do-Begin-End" имеет следующий синтакс:
For $i="1" To 20 Do Begin Do {Exec xcalc &} # список инструкций End
Frederic Cordier (cordie97@cui.unige.ch или f-cord96@univlyon1.fr).
Eddy J. Gurney (eddy@gizmo.aa.ans.net).
Перевел с английского Висктор Вислобоков (E-mail: victor_v@permonline.ru, FIDO: 2:5054/69.34@Fidonet.org)
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |