# Функції &DCOP;

Юрій
Чорноіван

    yurchor@ukr.net

Переклад українською

# Функції &DCOP;

Викликати у &kommander; &DCOP; можна у декілька способів. По-перше, це можна зробити за допомогою консолі

dcop kmdr-executor-@pid KommanderIf changeWidgetText myWidget new text

Тут ми припускали, що виконується файл &kommander; і ви маєте доступ до спеціальної функції @pid, яка визначає ідентифікатор процесу. Фактично, простіше замінити kmdr-executor-@pid на @dcopid. Але ви можете користуватися і цим синтаксисом (звичайно ж, без спеціальних функцій) з командного рядка або будь-якого зовнішнього скрипту для того, щоб змінити вікно &kommander;.

Оскільки у &kommander; не передбачено повноцінний інструмент обробки на стадії Alpha, якщо вам потрібно скористатися набагато швидшим внутрішнім &DCOP; з вікна іншої програми (&DCOP; консолі є дуже повільним), задача стає набагато складнішою, оскільки вам слід буде надати набагато більше відомостей, зокрема прототип виклику. Наведений вище виклик набуде форми:

@dcop(@dcopid, KommanderIf, enableWidget(QString, bool), Widget, true)

Читаючи попередні приклади, вам слід весь час пам’ятати, що під час вбудовування викликів &DCOP; у структури скриптової мови (на зразок bash), ви змушені будете використовувати виклики за допомогою консолі. Якщо ви використовуєте внутрішній &DCOP;, спочатку буде виконано всі спеціальні функції &kommander;, а потім вже виконуватиметься сам скрипт.

Існує новий спрощений спосіб використання &DCOP; у &kommander; за допомогою об’єктного синтаксису. Припустімо, що ви бажаєте змінити текст віджета з назвою @LineEdit1. Відповідна команда виглядатиме так:.

@LineEdit1.changeWidgetText(Новий текст)

Як ви можете бачити, новий синтаксис є дуже простим, а також добре узгоджується візуально з групами функцій. Всі посилання на &DCOP; у цьому розділі використовуватимуть новий об’єктний синтаксис, наведений вище. Будь ласка, зауважте, що, якщо ви викликаєте на віджет за допомогою &DCOP; з іншого вікна або іншої програми, першим параметром завжди буде назва віджета. Записи всіх перелічених у цьому розділі функцій починатимуться з другого параметра.

## &DCOP; для загальних змінних

global(QString variableName)

  Повертає значення вказаної глобальної змінної. Якщо скрипт було запущено з вікна &kommander;, всі (неглобальні) змінні, встановлені цим скриптом, припинять своє існування після завершення виконання скрипту і тому будуть недоступними іншим процесам скриптів або у новому екземплярі процесу виклику. Глобальна область видимості означає, що змінна існуватиме для будь-якого з процесів вікна до закриття самого вікна. Ви можете змінити ці змінні у будь-який момент за допомогою нового виклику `@setGlobal`.

setGlobal(QString variableName, QString value)

  Створює змінну, яка є глобальною для процесу вікна і надає значення цій змінній. Це значення можна отримати за допомогою функції global(QString variableName) або перевизначене.

## &DCOP; для всіх віджетів

changeWidgetText(QString text)

  Назва цієї функції є іншою назвою функції setWidgetText, цю функцію, ймовірно, буде вилучено з наступних версій програми. Ця функція вилучає текст показаний у віджеті і заміняє його на вказаний як параметр текст.

enableWidget(bool enable)

  Вмикає або вимикає показ віджета.

associatedText

  Повертає текст, пов’язаних з вказаним віджетом. Цей текст може не збігатися з показаним текстом. Буде повернуто значення @widgetText або текст і/або скрипт, використаний для появи показаного значення.

setAssociatedText(QString text)

  Ця команда встановлює типовий рядок тексту &kommander;. Це значення типово передається @widgetText і відповідає тексту підказки щодо того, що слід ввести до віджета. Навряд чи у вас виникне потреба у цій команді, але, якщо все ж виникне, ви будете знати, що така команда є. Застосовується для всіх віджетів, які містять дані.

## &DCOP; для віджетів ListBox і ComboBox

addListItem(QString item, int index)

  Додає пункт до віджета ListBox на вказану позицію. Нумерація списку починається з нуля. Щоб додати пункт у кінець списку, скористайтеся параметром -1.

addListItems(QStringList items, int index)

  Ця команда одразу додає увесь список рядків. Пункти списку слід відокремлювати символом EOL (\n — символами нового рядка). Це зручно, оскільки ви можете скористатися bash для порівняно простого отримання списку. Наприклад, за допомогою функції @exec(ls -l ~/projects | grep kmdr) пункти списку складатиметься з переліку файлів у теці вашого проекту &kommander;. Нумерація списку починатиметься з нуля. Щоб додати пункт у кінець списку, скористайтеся параметром -1.

addUniqueItem(QString item)

  addUniqueItem додасть пункт в кінець списку, лише якщо цей пункт є унікальним.

clearList

  Вилучає всі елементи.

removeListItem(int index)

  Вилучає елемент з вказаним номером index.

item(int index)

  Повертає текст елемента з вказаним номером index.

setCurrentListItem(int index)

  Визначає для поточного (або виділеного) елемента вказаний номер index. Застосовується до віджетів ListBox і ComboBox.

## &DCOP; для віджетів CheckBox і RadioButton

setChecked(QString widgetName, bool checked)

  Позначає або знімає позначення з віджетів CheckBox або RadioButton.

## &DCOP; для віджетів TabWidget

setCurrentTab(QString назваВіджета, int index)

  Відкриває вкладку з номером index у TabWidget. Нумерація починається з 0.