<?xml version="1.0" encoding="UTF-8" ?> <sect1 id="dcop-interface"> <sect1info> <title >Функції &DCOP;</title> <authorgroup> <author ><firstname ></firstname > <surname ></surname > <affiliation ><address > <email ></email> </address ></affiliation> </author> <othercredit role="translator" ><firstname >Юрій</firstname ><surname >Чорноіван</surname ><affiliation ><address ><email >yurchor@ukr.net</email ></address ></affiliation ><contrib >Переклад українською</contrib ></othercredit > </authorgroup> </sect1info> <title >Функції &DCOP;</title> <para >Викликати у &kommander; &DCOP; можна у декілька способів. По-перше, це можна зробити за допомогою консолі </para> <para >dcop kmdr-executor-@pid KommanderIf changeWidgetText myWidget <quote >new text</quote > </para> <para >Тут ми припускали, що виконується файл &kommander; і ви маєте доступ до спеціальної функції @pid, яка визначає ідентифікатор процесу. Фактично, простіше замінити <quote >kmdr-executor-@pid</quote > на @dcopid. Але ви можете користуватися і цим синтаксисом (звичайно ж, без спеціальних функцій) з командного рядка або будь-якого зовнішнього скрипту для того, щоб змінити вікно &kommander;. </para> <para >Оскільки у &kommander; не передбачено повноцінний інструмент обробки на стадії Alpha, якщо вам потрібно скористатися набагато швидшим внутрішнім &DCOP; з вікна іншої програми (&DCOP; консолі є дуже повільним), задача стає набагато складнішою, оскільки вам слід буде надати набагато більше відомостей, зокрема прототип виклику. Наведений вище виклик набуде форми: </para> <para >@dcop(@dcopid, KommanderIf, <quote >enableWidget(QString, bool)</quote >, Widget, true) </para> <para >Читаючи попередні приклади, вам слід весь час пам’ятати, що під час вбудовування викликів &DCOP; у структури скриптової мови (на зразок <application >bash</application >), ви змушені будете використовувати виклики за допомогою консолі. <emphasis >Якщо ви використовуєте внутрішній &DCOP;, спочатку буде виконано всі спеціальні функції &kommander;, а потім вже виконуватиметься сам скрипт.</emphasis > </para> <para >Існує новий спрощений спосіб використання &DCOP; у &kommander; за допомогою об’єктного синтаксису. Припустімо, що ви бажаєте змінити текст віджета з назвою @LineEdit1. Відповідна команда виглядатиме так:. </para> <para >@LineEdit1.changeWidgetText(Новий текст) </para> <para >Як ви можете бачити, новий синтаксис є дуже простим, а також добре узгоджується візуально з групами функцій. Всі посилання на &DCOP; у цьому розділі використовуватимуть новий об’єктний синтаксис, наведений вище. <emphasis >Будь ласка, зауважте, що, якщо ви викликаєте на віджет за допомогою &DCOP; з іншого вікна або іншої програми, першим параметром завжди буде назва віджета. Записи всіх перелічених у цьому розділі функцій починатимуться з другого параметра.</emphasis > </para> <sect2 id="dcop-globals"> <title >&DCOP; для загальних змінних</title> <variablelist> <varlistentry> <term >global(QString variableName)</term> <listitem> <para >Повертає значення вказаної глобальної змінної. Якщо скрипт було запущено з вікна &kommander;, всі (неглобальні) змінні, встановлені цим скриптом, припинять своє існування після завершення виконання скрипту і тому будуть недоступними іншим процесам скриптів або у новому екземплярі процесу виклику. Глобальна <quote >область видимості</quote > означає, що змінна існуватиме для будь-якого з процесів вікна до закриття самого вікна. Ви можете змінити ці змінні у будь-який момент за допомогою нового виклику <function >@setGlobal</function >. </para> </listitem> </varlistentry> <varlistentry> <term >setGlobal(QString variableName, QString value)</term> <listitem> <para >Створює змінну, яка є глобальною для процесу вікна і надає значення цій змінній. Це значення можна отримати за допомогою функції global(QString variableName) або перевизначене. </para> </listitem> </varlistentry> </variablelist> </sect2> <sect2 id="dcop-all"> <title >&DCOP; для всіх віджетів</title> <variablelist> <varlistentry> <term >changeWidgetText(QString text)</term> <listitem> <para >Назва цієї функції є іншою назвою функції setWidgetText, цю функцію, ймовірно, буде вилучено з наступних версій програми. Ця функція вилучає текст показаний у віджеті і заміняє його на вказаний як параметр текст. </para> </listitem> </varlistentry> <varlistentry> <term >enableWidget(bool enable)</term> <listitem> <para >Вмикає або вимикає показ віджета. </para> </listitem> </varlistentry> <varlistentry> <term >associatedText</term> <listitem> <para >Повертає текст, пов’язаних з вказаним віджетом. Цей текст може не збігатися з показаним текстом. Буде повернуто значення <quote >@widgetText</quote > або текст і/або скрипт, використаний для появи показаного значення. </para> </listitem> </varlistentry> <varlistentry> <term >setAssociatedText(QString text)</term> <listitem> <para >Ця команда встановлює типовий рядок тексту &kommander;. Це значення типово передається <quote >@widgetText</quote > і відповідає тексту підказки щодо того, що слід ввести до віджета. Навряд чи у вас виникне потреба у цій команді, але, якщо все ж виникне, ви будете знати, що така команда є. Застосовується для всіх віджетів, які містять дані. </para> </listitem> </varlistentry> </variablelist> </sect2> <sect2 id="dcop-box"> <title >&DCOP; для віджетів ListBox і ComboBox</title> <variablelist> <varlistentry> <term >addListItem(QString item, int index)</term> <listitem> <para >Додає пункт до віджета ListBox на вказану позицію. Нумерація списку починається з нуля. Щоб додати пункт у кінець списку, скористайтеся параметром -1. </para> </listitem> </varlistentry> <varlistentry> <term >addListItems(QStringList items, int index)</term> <listitem> <para >Ця команда одразу додає увесь список рядків. Пункти списку слід відокремлювати символом <acronym >EOL</acronym > (\n — символами нового рядка). Це зручно, оскільки ви можете скористатися bash для порівняно простого отримання списку. Наприклад, за допомогою функції @exec(ls -l ~/projects | grep kmdr) пункти списку складатиметься з переліку файлів у теці вашого проекту &kommander;. Нумерація списку починатиметься з нуля. Щоб додати пункт у кінець списку, скористайтеся параметром -1. </para> </listitem> </varlistentry> <varlistentry> <term >addUniqueItem(QString item)</term> <listitem> <para >addUniqueItem додасть пункт в кінець списку, лише якщо цей пункт є унікальним. </para> </listitem> </varlistentry> <varlistentry> <term >clearList</term> <listitem> <para >Вилучає всі елементи. </para> </listitem> </varlistentry> <varlistentry> <term >removeListItem(int index)</term> <listitem> <para >Вилучає елемент з вказаним номером index. </para> </listitem> </varlistentry> <varlistentry> <term >item(int index)</term> <listitem> <para >Повертає текст елемента з вказаним номером index. </para> </listitem> </varlistentry> <varlistentry> <term >setCurrentListItem(int index)</term> <listitem> <para >Визначає для поточного (або виділеного) елемента вказаний номер index. Застосовується до віджетів ListBox і ComboBox. </para> </listitem> </varlistentry> </variablelist> </sect2> <sect2 id="dcop-button"> <title >&DCOP; для віджетів CheckBox і RadioButton</title> <variablelist> <varlistentry> <term >setChecked(QString widgetName, bool checked)</term> <listitem> <para >Позначає або знімає позначення з віджетів CheckBox або RadioButton. </para> </listitem> </varlistentry> </variablelist> </sect2> <sect2 id="dcop-tab"> <title >&DCOP; для віджетів TabWidget</title> <variablelist> <varlistentry> <term >setCurrentTab(QString назваВіджета, int index)</term> <listitem> <para >Відкриває вкладку з номером index у TabWidget. Нумерація починається з 0. </para> </listitem> </varlistentry> </variablelist> </sect2> </sect1>