Специфікація BTRON3 (Український переклад) | Специфікація ОС Sakamura BTRON / BTRON3
Повернутися до змісту розділу Графічної оболонки
Попередня сторінка: 3.7 Примітиви вводу тексту (Повернутися)
Наступна сторінка: 3.9 Менеджер шрифтів (Перейти)

3.8 Менеджер Реальних та Віртуальних об'єктів (Real/Virtual Object Manager)

3.8.1 Функції Менеджера Реальних та Віртуальних об'єктів

3.8.1.1 Загальний огляд

Менеджер Реальних та Віртуальних об'єктів реалізує фундаментальну концепцію BTRON: модель Реальний об'єкт (Реальний об'єкт, Jisshin) / Віртуальний об'єкт (Вітуальний об'єкт, Kashin). Реальний об'єкт — це файл-носій даних, а Віртуальний об'єкт — графічне посилання на нього, через яке користувач взаємодіє з даними.

Крім того, менеджер надає функції реєстрації та видалення прикладних програм. Усі прикладні програми запускаються через нього.

Функції менеджера:

  1. Відображення та управління Віртуальними об'єктами
  2. Відображення та управління Наліпками (, Fusene)
  3. Управління прикладними програмами (реєстрація / видалення / запуск)
  4. Налаштування меню
  5. Управління підключенням файлових систем
  6. Інші прикладні функції

3.8.1.2 Реальний об'єкт / Віртуальний об'єкт / Відключений об'єкт (, Kyoshin)

«Реальний об'єкт» (Реальний об'єкт) — сукупність даних, що один до одного відповідає реальному файлу на носії. «Віртуальний об'єкт» (Вітуальний об'єкт) — ярлик-посилання на нього; один Реальний об'єкт може мати кілька Віртуальних. «Непрямий Віртуальний об'єкт» (Вітуальний об'єкт) — посилається на Реальний об'єкт на іншому пристрої через файл-посилання. «Відключений об'єкт» (, Kyoshin) — непрямий об'єкт, пристрій якого зараз відключений.

Реальний / Віртуальний / Відключений об'єкт
Мал. 114 : Реальний / Віртуальний / Відключений об'єкт

Існують «закритий Віртуальний об'єкт» (Вітуальний об'єкт) — відображає лише метаінформацію, та «відкритий Віртуальний об'єкт» (Вітуальний об'єкт) — показує вміст Реального об'єкта.

3.8.1.3 Відображення Віртуального об'єкта

Закритий об'єкт: горизонтальний прямокутник з піктограмою, іменем, відношенням (), типом та датою зміни. Відкритий об'єкт: розширює закриту форму вниз, додаючи зону відображення вмісту Реального об'єкта.

Відображення Віртуального об'єкта
Мал. 115 : Відображення Віртуального об'єкта
Рядок заголовка
Мал. 116 : Рядок заголовка Віртуального об'єкта
Приклади рядка заголовка
Мал. 117 : Приклади рядка заголовка

3.8.1.4 Операції з Віртуальними об'єктами

Меню «Вітуальний об'єкт» (Операції з Віртуальним об'єктом):

(1) Відкрити відкрити
(2) Закрити закрити
(3) Видалити видалити
(4) Копіювати до лотка трей: копіювати
(5) Перемістити до лотка трей: перемістити
(6) Змінити ім'я ім'я
(7) Змінити відношення відношення
(8) Змінити текст заголовка текст заголовка
(9) Змінити розмір символів розмір символів
(10)Змінити колір колір
(11)Показати інформацію інформація
(12)Створити нову версію нова версія
(13)Відключити відключити
(14)Відкрити у вікні відкрити у вікні
(15)Вставити дані з лотка записати з лотка
(16)Підключити підключити
(17)Показати стан диска стан
(18)Дефрагментація ----
(19)Запустити утиліту (назва утиліти)

3.8.4 Визначення даних та констант

/* Константи режиму відображення */
V_NODISP    -- Не відображати
V_DISP      -- Відобразити (зона вмісту заповнюється кольором фону)
V_DISPALL   -- Відобразити (зона вмісту через відповідний додаток)
V_DISPAREA  -- Лише зона вмісту (без рамки)
V_ERASE     -- Стерти (заповнити кольором фону вікна)
V_NOFRAME   -- Рамка пунктиром (для внутрішніх об'єктів)
V_ERAORG    -- Стерти вихідну позицію при переміщенні

/* Константи трансформації */
V_SIZE      -- Трансформувати до вказаного прямокутника
V_OPEN      -- Відкрити до розміру за замовчуванням
V_CLOSE     -- Закрити
V_CHECK     -- Лише повернути поточний прямокутник

/* Константи атрибутів (ochg_sts) */
V_GETSTS  0x8000  -- Отримати поточний стан без змін
V_PURGE   0xFFFF  -- Скинути збережений образ відображення
V_CHKREF  0x8888  -- Перевірити посилання на Реальний об'єкт
V_CHKDUP  0x9999  -- Перевірити посилання на файл
V_NONAME  0x0001  -- Не відображати ім'я
V_NORELN  0x0002  -- Не відображати відношення
V_NOTYPE  0x0004  -- Не відображати тип даних
V_NOTIME  0x0008  -- Не відображати дату зміни
V_FIXDEF  0x0010  -- Фіксований додаток за замовчуванням
V_NOIMG   0x0020  -- Не зберігати образ відображення
V_NOPICT  0x0040  -- Не відображати піктограму
V_NOFDISP 0x0080  -- Не відображати рамку
V_NOEXPND 0x0200  -- Не розгортати під час друку
V_AUTEXE  0x4000  -- Автоматичний запуск

3.8.5 Функції Менеджера Реальних та Віртуальних об'єктів

Ці функції надаються як розширені системні виклики оболонки. При помилці повертається від'ємний код. При успіху — «0» або «+».

oreg_vob
Register Virtual Object
Реєстрація Віртуального об'єкта у вікні

【Синтаксис / Прототип】

VID oreg_vob(VLINK *vlnk, VP vseg, W wid, UW disp)

【Параметри】

VLINK  *vlnk    Посилання на Реальний об'єкт (NULL — реєстрація Наліпки)
VP      vseg    Сегмент Віртуального об'єкта (VOBSEG) або Наліпки (FUSENSEG)
W       wid     ID вікна (>= 0), або -(ID середовища малювання) при wid < 0
UW      disp    Режим: V_NODISP | V_DISP | V_DISPALL | V_DISPAREA | [V_NOFRAME] | [V_AUTEXE]

【Значення, що повертається】

>= 0    ID Віртуального об'єкта (vid > 0)
 < 0    Помилка (Код помилки)

【Детальний опис】

Реєструє Віртуальний об'єкт vseg для посилання vlnk у вікні wid. Повертає ID об'єкта (vid > 0). При wid < 0 — реєстрація у середовищі малювання (-wid). При vlnk = NULL — реєструється Наліпка (vseg вказує на FUSENSEG). Якщо файлова система відключена і немає інших-об'єктів — відображається «Панель підключення пристрою».

【Коди помилок】

EX_ADR   : Недопустима адреса vlnk або vseg.
EX_LIMIT : Перевищено ліміт кількості об'єктів.
EX_NOSPC : Нестача пам'яті.
EX_PAR   : Неприпустиме значення disp або вміст vseg.
EX_WID   : Вікно (wid) не існує.
b_odup_vob
Duplicate Virtual Object
Дублювання Віртуального об'єкта

【Синтаксис / Прототип】

VID b_odup_vob(W org)

【Параметри】

W   org     ID Віртуального об'єкта-джерела

【Значення, що повертається】

>= 0    ID нового Віртуального об'єкта
 < 0    Помилка (Код помилки)

【Детальний опис】

Реєструє новий Віртуальний об'єкт з тим самим вмістом, що й org. Використовується переважно для операції копіювання.

【Коди помилок】

EX_LIMIT : Перевищено ліміт.
EX_NOSPC : Нестача пам'яті.
EX_VID   : ID Віртуального об'єкта (org) не існує.
odel_vob
Delete Virtual Object
Скасування реєстрації Віртуального об'єкта

【Синтаксис / Прототип】

W   odel_vob(W vid, W clr)

【Параметри】

W   vid    >= 0 : ID Віртуального об'єкта
            < 0 : -(ID вікна) — видалити всі об'єкти вікна
W   clr     = 0 : не стирати область відображення
           != 0 : заповнити область кольором фону вікна

【Значення, що повертається】

>= 0    Кількість видалених об'єктів
 < 0    Помилка (Код помилки)

【Детальний опис】

Видаляє реєстрацію Віртуального об'єкта vid. При vid < 0 — видаляє всі об'єкти у вікні -vid (крім зареєстрованих з wid < 0). Об'єкти, зареєстровані з wid < 0, потрібно видаляти вручну по одному.

【Коди помилок】

EX_VID   : ID Віртуального об'єкта (vid) не існує.
ocls_wnd
Close Window (VObj cleanup)
Обробка закриття вікна

【Синтаксис / Прототип】

ERR ocls_wnd(W wid)

【Параметри】

W   wid     ID вікна

【Значення, що повертається】

= 0     Успішне виконання

【Детальний опис】

Повідомляє менеджеру, що вікно wid закрито. Виконує видалення реєстрацій об'єктів, скасування стану «в обробці» та оновлення даних. Зазвичай викликається Менеджером вікон, а не прикладними програмами.

【Коди помилок】

Відсутні.

odsp_vob
Display Virtual Object
Відображення / приховання Віртуального об'єкта

【Синтаксис / Прототип】

W   odsp_vob(W vid, RECT *r, UW disp)

【Параметри】

W       vid    >= 0      : ID Віртуального об'єкта
               = 0x8000  : передача списку об'єктів
               < 0       : -(ID вікна) — всі об'єкти вікна
RECT   *r               Область відображення (або вказівник на список при vid=0x8000)
UW      disp            V_ERASE | V_DISP | V_DISPALL | V_DISPAREA | [V_NOFRAME]

【Значення, що повертається】

>= 0    Кількість оброблених об'єктів
 < 0    Помилка (Код помилки)

【Детальний опис】

Відображає або стирає Віртуальний об'єкт vid. r — відносні координати видимої ділянки (NULL = вся область). При vid = 0x8000r вказує на список структур:

    W    vid  -- ID Віртуального об'єкта
    RECT r    -- Область відображення
      :   :
    W    0    -- Кінець списку

【Коди помилок】

EX_ADR  : Недопустима адреса r.
EX_PAR  : Неприпустиме значення disp.
EX_VID  : ID Віртуального об'єкта (vid) не існує.
EX_WID  : Вікно (wid) не існує (тільки при vid < 0).
odsp_vor
Display Virtual Object with Scale
Відображення Віртуального об'єкта з масштабуванням

【Синтаксис / Прототип】

W   odsp_vor(W vid, RECT *r, UW disp, PNT scal)

【Параметри】

W       vid    Аналогічно odsp_vob
RECT   *r      Область відображення
UW      disp   Режим (аналогічно odsp_vob)
PNT     scal   Коефіцієнт масштабування (scal.x — горизонт., scal.y — верт.;
               0x100 = 1:1; 0 трактується як 0x100)

【Значення, що повертається】

>= 0    Кількість оброблених об'єктів
 < 0    Помилка (Код помилки)

【Детальний опис】

Аналогічна odsp_vob(), але з масштабуванням за коефіцієнтом scal. Впливає на координати, розмір символів, піктограму та образ зони вмісту.

【Коди помилок】

EX_ADR  : Недопустима адреса r.
EX_PAR  : Неприпустиме значення disp.
EX_VID  : ID Віртуального об'єкта (vid) не існує.
EX_WID  : Вікно не існує (при vid < 0).
odra_vob
Draw Virtual Object Temporarily
Тимчасове відображення Віртуального об'єкта

【Синтаксис / Прототип】

W   odra_vob(GID gid, VP vseg, VLINK *vlnk, RECT *r, UW disp)

【Параметри】

GID     gid     ID середовища малювання
VP      vseg    Сегмент Віртуального об'єкта
VLINK  *vlnk    Посилання на Реальний об'єкт
RECT   *r       Область відображення
UW      disp    Режим відображення

【Значення, що повертається】

= 0     Успішне виконання
< 0     Помилка (Код помилки)

【Детальний опис】

Відображає Віртуальний об'єкт безпосередньо у середовищі малювання gid без реєстрації. Використовується для тимчасового показу (напр. під час D&D).

【Коди помилок】

EX_ADR  : Недопустима адреса vseg або r.
EX_PAR  : Неприпустиме значення disp.
EG_GID  : ID середовища малювання (gid) не існує.
odra_vor
Draw Virtual Object with Scale
Тимчасове відображення Віртуального об'єкта з масштабуванням

【Синтаксис / Прототип】

W   odra_vor(GID gid, VP vseg, VLINK *vlnk, RECT *r, UW disp, PNT scal)

【Параметри】

GID     gid     ID середовища малювання
VP      vseg    Сегмент Віртуального об'єкта
VLINK  *vlnk    Посилання на Реальний об'єкт
RECT   *r       Область відображення
UW      disp    Режим відображення
PNT     scal    Коефіцієнт масштабування (0x100 = 1:1)

【Значення, що повертається】

= 0     Успішне виконання
< 0     Помилка (Код помилки)

【Детальний опис】

Аналогічна odra_vob(), але з масштабуванням на коефіцієнт scal.

【Коди помилок】

EX_ADR  : Недопустима адреса vseg або r.
EX_PAR  : Неприпустиме значення disp.
EG_GID  : ID середовища малювання (gid) не існує.
ofnd_vob
Find Virtual Object at Point
Пошук Віртуального об'єкта за координатою

【Синтаксис / Прототип】

VID ofnd_vob(W wid, PNT pos, UW part, RECT *r)

【Параметри】

W       wid     ID вікна
PNT     pos     Координата пошуку (відносно вікна)
UW      part    Частина: V_PTITLE | V_PAREA | V_PHANDLE | V_PFRAME | V_PALL
RECT   *r       Буфер для прямокутника знайденого об'єкта (або NULL)

【Значення, що повертається】

> 0     ID знайденого об'єкта
= 0     Об'єкт не знайдено
< 0     Помилка (Код помилки)

【Детальний опис】

Шукає Віртуальний об'єкт у вікні wid, що містить точку pos. part визначає, яка частина (заголовок, зона вмісту, ручка, рамка, весь об'єкт). Якщо знайдено — у r записується прямокутник об'єкта.

【Коди помилок】

EX_ADR  : Недопустима адреса r.
EX_PAR  : Неприпустиме значення part.
EX_WID  : Вікно (wid) не існує.
omov_vob
Move Virtual Object
Переміщення Віртуального об'єкта

【Синтаксис / Прототип】

ERR omov_vob(W vid, W wid, RECT *newr, UW disp)

【Параметри】

W       vid    >= 0        : ID Віртуального об'єкта
               < 0         : -(ID вікна) — перемістити всі об'єкти вікна
W       wid    ID цільового вікна (0 = без зміни вікна;
               0xFFFF8000 = тимчасове видалення)
RECT   *newr   Нова позиція (лівий верхній кут; виконання — фактичний прямокутник)
UW      disp   V_NODISP | V_DISP | V_DISPALL | V_DISPAREA | [V_ERAORG]

【Значення, що повертається】

= 0     Успішне виконання
< 0     Помилка (Код помилки)

【Детальний опис】

Переміщує об'єкт vid у позицію newr у вікні wid. Розмір не змінюється; після виконання newr містить фактичний прямокутник. При wid = 0xFFFF8000 — тимчасове видалення (для реалізації «скасування»); відновити через omov_vob(), остаточно видалити через odel_vob().

【Коди помилок】

EX_ADR  : Недопустима адреса newr.
EX_PAR  : Неприпустиме значення disp.
EX_VID  : ID Віртуального об'єкта (vid) не існує.
EX_WID  : Цільове вікно (wid) не існує (при wid > 0).
orsz_vob
Resize / Transform Virtual Object
Трансформація Віртуального об'єкта

【Синтаксис / Прототип】

ERR orsz_vob(W vid, RECT *newr, UW mode)

【Параметри】

W       vid     ID Віртуального об'єкта
RECT   *newr    Новий прямокутник (вихід — фактичний після трансформації)
UW      mode    ::= (V_SIZE | V_ADJUST(1~3) | V_OPEN | V_CLOSE | V_CHECK)
                    | (V_NODISP | V_DISP | V_DISPALL | V_DISPAREA) | [V_ERAORG]
V_SIZE
Трансформувати до прямокутника newr.
V_ADJUST, V_ADJUST1..3
Підлаштувати ширину: увесь / до імені / до відношення / до типу.
V_OPEN
Відкрити до розміру за замовчуванням.
V_CLOSE
Закрити.
V_CHECK
Лише повернути поточний прямокутник.

【Значення, що повертається】

= 0     Успішне виконання
< 0     Помилка (Код помилки)

【Коди помилок】

EX_ADR  : Недопустима адреса newr.
EX_PAR  : Неприпустиме значення mode.
EX_VID  : ID Віртуального об'єкта (vid) не існує.
EX_VOBJ : Стан/атрибути не дозволяють операцію.
ochg_chs
Change Character Size
Зміна розміру символів заголовка

【Синтаксис / Прототип】

W   ochg_chs(W vid, W csize)

【Параметри】

W   vid     ID Віртуального об'єкта
W   csize    < 0 : показати «Панель зміни розміру символів»
            >= 0 : новий розмір (одиниці CHSIZE)

【Значення, що повертається】

= 0     Без змін
= 1     Розмір змінено (потрібна перерисовка)
< 0     Помилка (Код помилки)

【Коди помилок】

EX_PAR  : Неприпустиме значення csize.
EX_VID  : ID не існує.
EX_VOBJ : Відключений стан або Наліпка.
ochg_col
Change Color
Зміна кольору Віртуального об'єкта

【Синтаксис / Прототип】

W   ochg_col(W vid, COLOR fgcol, COLOR bgcol)

【Параметри】

W       vid     ID Віртуального об'єкта
COLOR   fgcol   Колір переднього плану (< 0 — показати панель вибору кольору)
COLOR   bgcol   Колір фону

【Значення, що повертається】

= 0     Без змін або скасовано
= 1     Колір змінено (потрібна перерисовка)
< 0     Помилка (Код помилки)

【Коди помилок】

EX_VID  : ID не існує.
EX_VOBJ : Відключений стан (при fgcol >= 0).
ochg_nam
Change Object Name
Зміна імені Реального об'єкта

【Синтаксис / Прототип】

W   ochg_nam(W vid, TC *name)

【Параметри】

W   vid     ID Віртуального об'єкта
TC *name    Нове ім'я (NULL або порожній рядок — показати панель редагування)

【Значення, що повертається】

= 0     Без змін або скасовано
= 1     Ім'я змінено (потрібна перерисовка)
< 0     Помилка (Код помилки)

【Коди помилок】

EX_ADR  : Недопустима адреса name.
EX_VID  : ID не існує.
EX_VOBJ : Відключений стан або Наліпка.
ochg_rel
Change Relation ()
Зміна відношення () Віртуального об'єкта

【Синтаксис / Прототип】

W   ochg_rel(W vid, W index)

【Параметри】

W   vid     ID Віртуального об'єкта
W   index    < 0 : показати «Панель зміни відношення»
            >= 0 : індекс нового відношення

【Значення, що повертається】

= 0     Без змін
= 1     Відношення змінено (потрібна перерисовка)
< 0     Помилка (Код помилки)

【Коди помилок】

EX_PAR  : Неприпустимий index.
EX_VID  : ID не існує.
EX_VOBJ : Відключений стан (при index >= 0) або Наліпка.
onew_obj
Create New Version
Створення нової версії Реального об'єкта

【Синтаксис / Прототип】

VID onew_obj(W vid, VLINK *vlnk)

【Параметри】

W       vid     ID Віртуального об'єкта
VLINK  *vlnk    Буфер для посилання на нову версію (або NULL)

【Значення, що повертається】

>= 0    ID Віртуального об'єкта нової версії / дублікату
 < 0    Помилка (Код помилки)

【Детальний опис】

Створює нову версію (або дублює дискету). Відображається «Панель нової версії». Новий Віртуальний об'єкт автоматично з'являється поруч з vid.

【Коди помилок】

EX_ADR  : Недопустима адреса vlnk.
EX_LIMIT: Забагато файлів.
EX_VID  : ID не існує.
EX_VOBJ : Стан «в обробці» або Наліпка.
ocre_obj
Create New Real Object
Створення нового Реального об'єкта

【Синтаксис / Прототип】

W   ocre_obj(W vid, TC *name, W *nvid, LINK *lnk, W copy)

【Параметри】

W       vid     ID Віртуального об'єкта (визначає цільовий пристрій)
TC     *name    Ім'я нового об'єкта (порожній рядок — показати панель вибору)
W      *nvid    Буфер для ID нового Віртуального об'єкта (або NULL)
LINK   *lnk     Буфер для посилання (або NULL)
W       copy   != 0 : скопіювати вміст vid;  = 0 : порожній об'єкт

【Значення, що повертається】

>= 0    Файловий дескриптор нового Реального об'єкта
 < 0    Помилка (Код помилки)

【Коди помилок】

EX_ADR  : Недопустима адреса.
EX_VID  : ID не існує.
EX_NOEXS: Невідома файлова система (при vid < 0).
odsp_inf
Display Object Info Panel
Відображення інформаційної панелі Реального об'єкта

【Синтаксис / Прототип】

W   odsp_inf(W vid)

【Параметри】

W   vid     ID Віртуального об'єкта

【Значення, що повертається】

= 0     Успішне виконання
< 0     Помилка (Код помилки)

【Детальний опис】

Відображає «Інформаційну панель» з метаданими Реального об'єкта (власник, доступ, розмір тощо).

【Коди помилок】

EX_VID  : ID не існує.
EX_VOBJ : Відключений стан або Наліпка.
odsk_inf
Display Disk Info
Відображення інформації про стан диска

【Синтаксис / Прототип】

W   odsk_inf(W vid)

【Параметри】

W   vid     ID Об'єкта пристрою

【Значення, що повертається】

= 0     Успішне виконання
< 0     Помилка (Код помилки)

【Детальний опис】

Відображає «Панель стану диска» (вільний/зайнятий простір, стан файлової системи).

【Коди помилок】

EX_VID  : ID не існує.
EX_VOBJ : Відключений стан, Наліпка або не є об'єктом пристрою.
oget_vob
Get Virtual Object Data
Отримання даних Віртуального об'єкта

【Синтаксис / Прототип】

W   oget_vob(W vid, VLINK *vlnk, VP vseg, W *rsize)

【Параметри】

W       vid     ID Віртуального об'єкта
VLINK  *vlnk    Буфер для VLINK (або NULL)
VP      vseg    Буфер для сегмента (або NULL)
W      *rsize   Розмір буфера vseg / фактичний розмір (або NULL)

【Значення, що повертається】

= 0     Успішне виконання
< 0     Помилка (Код помилки)

【Коди помилок】

EX_ADR  : Недопустима адреса.
EX_VID  : ID не існує.
EX_NOEXS: Невідома файлова система (при vid < 0).
ochg_sts
Change Virtual Object Status
Зміна стану / атрибутів Віртуального об'єкта

【Синтаксис / Прототип】

W   ochg_sts(W vid, UW mode)

【Параметри】

W   vid    >= 0 : ID Віртуального об'єкта
           < 0  : -(ID вікна) — всі об'єкти вікна
UW  mode   V_GETSTS | V_PURGE | V_CHKREF | V_CHKDUP |
           (V_NONAME | V_NORELN | V_NOTYPE | V_NOTIME | V_FIXDEF |
            V_NOIMG | V_NOPICT | V_NOFDISP | V_NOEXPND | V_AUTEXE)

【Значення, що повертається】

>= 0    Попередній стан / атрибути (або результат перевірки)
 < 0    Помилка (Код помилки)

【Детальний опис】

Змінює стан/атрибути об'єкта. Повертає попередній стан. Перерисовка не відбувається. При V_CHKREF/V_CHKDUP: повертає «1» якщо є інші посилання.

【Коди помилок】

EX_PAR  : Неприпустиме значення mode.
EX_VID  : ID не існує.
osta_prc
Start Processing
Початок обробки Віртуального об'єкта (старт додатка)

【Синтаксис / Прототип】

ERR osta_prc(W vid, W wid)

【Параметри】

W   vid     ID Віртуального об'єкта (з повідомлення M_EXECREQ)
W   wid     ID вікна, відкритого додатком (від'ємне — для малих додатків)

【Значення, що повертається】

= 0     Успішне виконання
< 0     Помилка (Код помилки)

【Детальний опис】

Додаток, запущений менеджером, повинен викликати цю функцію після відкриття вікна. Переводить об'єкт vid у стан «в обробці» та пов'язує з вікном wid.

【Коди помилок】

EX_PAR  : Неприпустимий параметр (не малий додаток і wid <= 0).
EX_VID  : ID не існує.
EX_VOBJ : Наліпка.
oend_prc
End Processing
Завершення обробки Віртуального об'єкта

【Синтаксис / Прототип】

GID oend_prc(W vid, VP dat, W update)

【Параметри】

W   vid     ID Віртуального об'єкта
VP  dat     Буфер для образу відображення (або NULL)
W   update != 0 : оновити заголовок та зберегти образ
            = 0 : лише скасувати стан «в обробці»

【Значення, що повертається】

>= 0    ID середовища малювання для образу
 < 0    Помилка (Код помилки)

【Коди помилок】

EX_ADR  : Недопустима адреса dat.
EX_VID  : ID не існує.
EX_VOBJ : Об'єкт не в стані «в обробці».
oend_req
Request End Processing
Запит на завершення до обробного додатка

【Синтаксис / Прототип】

ERR oend_req(W vid, W mode)

【Параметри】

W   vid     ID Віртуального об'єкта
W   mode    Режим запиту завершення

【Значення, що повертається】

= 0     Успішне виконання
< 0     Помилка (Код помилки)

【Детальний опис】

Надсилає запит на завершення до додатка, що обробляє об'єкт vid.

【Коди помилок】

EX_VID  : ID не існує.
EX_VOBJ : Не в стані «в обробці».
oreq_prc
Request to Processing App
Запит на операцію до обробного додатка

【Синтаксис / Прототип】

ERR oreq_prc(W vid, W req, VP buf)

【Параметри】

W   vid     ID Віртуального об'єкта
W   req     Код запиту
VP  buf     Буфер параметрів

【Значення, що повертається】

= 0     Успішне виконання
< 0     Помилка (Код помилки)

【Детальний опис】

Надсилає запит req до додатка, що обробляє об'єкт. Для міждодаткової комунікації.

【Коди помилок】

EX_ADR  : Недопустима адреса buf.
EX_VID  : ID не існує.
EX_VOBJ : Не в стані «в обробці».
orsp_prc
Respond to Request
Відповідь на запит від менеджера

【Синтаксис / Прототип】

ERR orsp_prc(W vid, W result, VP buf)

【Параметри】

W   vid     ID Віртуального об'єкта
W   result  Код результату
VP  buf     Буфер даних відповіді

【Значення, що повертається】

= 0     Успішне виконання
< 0     Помилка (Код помилки)

【Детальний опис】

Відповідь на запит oreq_prc(). Викликається після виконання потрібних дій.

【Коди помилок】

EX_ADR  : Недопустима адреса buf.
EX_VID  : ID не існує.
oput_dat
Put Data from Tray
Вставка даних у Реальний об'єкт з лотка

【Синтаксис / Прототип】

W   oput_dat(W vid, W wid)

【Параметри】

W   vid     ID Віртуального об'єкта-отримувача
W   wid     ID вікна-джерела

【Значення, що повертається】

= 0     Успішне виконання
< 0     Помилка (Код помилки)

【Коди помилок】

EX_VID  : ID не існує.
EX_VOBJ : Відключений стан або Наліпка.
oupd_fil
Update File Display
Оновлення відображення після зміни Реального об'єкта

【Синтаксис / Прототип】

W   oupd_fil(W vid)

【Параметри】

W   vid     ID Віртуального об'єкта

【Значення, що повертається】

= 0     Успішне виконання
< 0     Помилка (Код помилки)

【Детальний опис】

Повідомляє менеджеру про зміну Реального об'єкта. Оновлюється заголовок (ім'я, дата) та надсилаються запити до всіх інших Віртуальних об'єктів того ж Реального об'єкта.

【Коди помилок】

EX_VID  : ID не існує.
oset_tmf
Set Time Format
Встановлення формату відображення часу

【Синтаксис / Прототип】

W   oset_tmf(W fmt)

【Параметри】

W   fmt     Формат відображення часу (0 = системний за замовчуванням)

【Значення, що повертається】

>= 0    Попередній формат
 < 0    Помилка (Код помилки)

【Коди помилок】

EX_PAR  : Неприпустиме значення fmt.
oget_men
Get Object Menu Data
Отримання меню Реального об'єкта

【Синтаксис / Прототип】

W   oget_men(W vid, W wid, VP buf, W bsz)

【Параметри】

W   vid     ID Віртуального об'єкта
W   wid     ID вікна
VP  buf     Буфер для меню
W   bsz     Розмір буфера

【Значення, що повертається】

>= 0    Розмір даних меню
 < 0    Помилка (Код помилки)

【Коди помилок】

EX_ADR  : Недопустима адреса buf.
EX_VID  : ID не існує.
oget_vmn
Get VObject Operation Menu
Отримання меню операцій з Віртуальним об'єктом

【Синтаксис / Прототип】

W   oget_vmn(W vid, W wid, VP buf, W bsz)

【Параметри】

W   vid    >= 0 : ID Віртуального об'єкта
           < 0  : -(ID вікна) — меню для всього вікна
W   wid    ID батьківського вікна
VP  buf    Буфер
W   bsz    Розмір буфера

【Значення, що повертається】

>= 0    Розмір меню
 < 0    Помилка (Код помилки)

【Детальний опис】

Отримує меню «Вітуальний об'єкт» для об'єкта. Недоступні пункти відображаються сірим залежно від стану (відкритий/закритий, в обробці, відключений тощо).

【Коди помилок】

EX_ADR  : Недопустима адреса buf.
EX_VID  : ID не існує (при vid > 0).
oexe_vmn
Execute VObject Menu Item
Виконання пункту меню Операцій з Віртуальними об'єктами

【Синтаксис / Прототип】

W   oexe_vmn(W vid, W item, VP buf, EVENT *evt)

【Параметри】

W       vid    >= 0 : ID Віртуального об'єкта
               <= 0 : -(ID вікна) — для всіх об'єктів вікна
W       item   Пункт меню
VP      buf    Буфер для результату
EVENT  *evt    Подія, що ініціювала виклик

【Значення, що повертається】

>= 0    Результат: VM_NONE, VM_OPEN, VM_CLOSE, ...
 < 0    Помилка (Код помилки)

Константи результату:

VM_NONE ( 0): Нічого не сталося
VM_OPEN ( 1): Відкрито Нова RECT
VM_CLOSE ( 2): Закрито Нова RECT
VM_NAME ( 3): Ім'я змінено
VM_RELN ( 4): Відношення змінено Новий індекс
VM_NEW ( 5): Нова версія створена ID нового obj
VM_DETACH( 6): Перейшов у стан
VM_DISP ( 7): Атрибут відображення зміненоНова RECT
VM_REFMT ( 8): Переформатовано
VM_PASTE ( 9): Вставлено у об'єкт Код додатка
VM_EXREQ (10): Запит запуску Наліпки
VM_ATTACH(11): Підключено
VM_APLREG(12): Додаток зареєстровано
VM_APLDEL(13): Реєстрацію видалено
VM_INFO (14): Інформація відображена
VM_DISK (15): Стан диска відображено
VM_GABAGE(16): Дефрагментацію запущено

【Детальний опис】

Виконує пункт меню item. При зміні стану потрібна перерисовка. При VM_NEW — новий об'єкт потрібно додати до вікна. При VM_EXREQ — запуск Наліпки виконується окремо через oexe_apg().

【Коди помилок】

EX_ADR  : Недопустима адреса buf.
EX_PAR  : Неприпустиме значення item.
EX_VID  : ID не існує (при vid > 0).
EX_VOBJ : Стан/атрибути не відповідають пункту.
ochg_env
Change Execution Environment File
Зміна файлу середовища виконання

【Синтаксис / Прототип】

W   ochg_env(LINK *lnk, W wid)

【Параметри】

LINK   *lnk     Посилання на файл середовища (NULL — відновити попередній)
W       wid     ID вікна середовища виконання

【Значення, що повертається】

>= 0    Рівень стека (0 = не визначено)
 < 0    Помилка (Код помилки)

【Детальний опис】

Встановлює файл середовища виконання. Попередній зберігається у стеку. При lnk = NULL — відновлює попередній зі стека. При старті системи файл не визначений; потрібно ініціалізувати.

【Коди помилок】

EX_ADR  : Недопустима адреса lnk.
EX_LIMIT: Забагато файлів середовища.
oget_env
Get Execution Environment
Отримання поточного файлу середовища виконання

【Синтаксис / Прототип】

WID oget_env(LINK *lnk)

【Параметри】

LINK   *lnk     Буфер для посилання (або NULL)

【Значення, що повертається】

>= 0    ID вікна середовища (0 = не визначено)
 < 0    Помилка (Код помилки)

【Коди помилок】

EX_ADR  : Недопустима адреса lnk.
oreg_apg
Register Application
Реєстрація прикладної програми

【Синтаксис / Прототип】

W   oreg_apg(LINK *lnk, TC *name, W type, W mode)

【Параметри】

LINK   *lnk     Посилання на виконуваний файл
TC     *name    Ім'я додатка (TRON Code)
W       type    Тип даних (тип Реального об'єкта)
W       mode    Режим реєстрації

【Значення, що повертається】

= 0     Успішне виконання
< 0     Помилка (Код помилки)

【Коди помилок】

EX_ADR  : Недопустима адреса lnk або name.
EX_LIMIT: Забагато зареєстрованих програм.
odel_apg
Delete Application Registration
Видалення реєстрації прикладної програми

【Синтаксис / Прототип】

W   odel_apg(LINK *lnk)

【Параметри】

LINK   *lnk     Посилання на виконуваний файл

【Значення, що повертається】

= 0     Успішне виконання
< 0     Помилка (Код помилки)

【Коди помилок】

EX_ADR  : Недопустима адреса lnk.
EX_NOEXS: Програма не зареєстрована.
oset_sea
Set Search Filesystems
Встановлення списку файлових систем для пошуку

【Синтаксис / Прототип】

W   oset_sea(W *fslist, W cnt)

【Параметри】

W  *fslist  Масив ID файлових систем
W   cnt     Кількість елементів

【Значення, що повертається】

= 0     Успішне виконання
< 0     Помилка (Код помилки)

【Коди помилок】

EX_ADR  : Недопустима адреса fslist.
EX_PAR  : Неприпустимий вміст.
oget_sea
Get Search Filesystems
Отримання списку файлових систем для пошуку

【Синтаксис / Прототип】

W   oget_sea(W *fslist, W bsz)

【Параметри】

W  *fslist  Буфер для списку
W   bsz     Розмір буфера (кількість W)

【Значення, що повертається】

>= 0    Кількість файлових систем
 < 0    Помилка (Код помилки)

【Коди помилок】

EX_ADR  : Недопустима адреса fslist.
ofnd_apg
Find Application
Пошук прикладної програми для Реального об'єкта

【Синтаксис / Прототип】

W   ofnd_apg(W vid, LINK *lnk, W mode)

【Параметри】

W       vid     ID Віртуального об'єкта
LINK   *lnk     Буфер для посилання на додаток
W       mode    0 = за замовчуванням; 1 = наступний

【Значення, що повертається】

>= 0    ID додатка (0 = не знайдено)
 < 0    Помилка (Код помилки)

【Коди помилок】

EX_ADR  : Недопустима адреса lnk.
EX_VID  : ID не існує.
EX_VOBJ : Відключений стан або Наліпка.
oexe_apg
Execute Application
Запуск прикладної програми для Реального об'єкта

【Синтаксис / Прототип】

W   oexe_apg(W vid, LINK *lnk, W mode)

【Параметри】

W       vid     ID Віртуального об'єкта
LINK   *lnk     Конкретний додаток (NULL = за замовчуванням)
W       mode    Режим запуску

【Значення, що повертається】

= 0     Успішне виконання
< 0     Помилка (Код помилки)

【Детальний опис】

Запускає додаток для об'єкта vid. Надсилається повідомлення M_EXECREQ.

【Коди помилок】

EX_ADR  : Недопустима адреса lnk.
EX_VID  : ID не існує.
EX_VOBJ : Відключений стан.
EX_NOEXS: Додаток не знайдено.
odet_fls
Detach Filesystem
Відключення файлової системи

【Синтаксис / Прототип】

W   odet_fls(W fsid, W mode)

【Параметри】

W   fsid    ID файлової системи
W   mode    Режим відключення

【Значення, що повертається】

= 0     Успішне виконання
< 0     Помилка (Код помилки)

【Детальний опис】

Відключає файлову систему. Всі Реальні об'єкти стають недоступними; відповідні Віртуальні об'єкти переходять у стан (Відключений).

【Коди помилок】

EX_PAR  : Неприпустимий fsid.
EX_VOBJ : Є об'єкти «в обробці» на цьому пристрої.
ofdt_fls
Force Detach Filesystem
Примусове відключення файлової системи

【Синтаксис / Прототип】

W   ofdt_fls(W fsid)

【Параметри】

W   fsid    ID файлової системи

【Значення, що повертається】

= 0     Успішне виконання
< 0     Помилка (Код помилки)

【Детальний опис】

Примусово відключає файлову систему навіть при об'єктах «в обробці». При аварійних ситуаціях.

【Коди помилок】

EX_PAR  : Неприпустимий fsid.
oatt_fls
Attach Filesystem (Disk Insert Event)
Підключення файлової системи (обробка події вставки диска)

【Синтаксис / Прототип】

W   oatt_fls(EVENT *evt, TC *dev)

【Параметри】

EVENT  *evt     Подія вставки пристрою (NULL = повторне підключення)
TC     *dev     Буфер для логічного імені пристрою (мін. 9 символів; або NULL)

【Значення, що повертається】

= 0     Успішне виконання
< 0     Помилка (Код помилки)

【Детальний опис】

Обробляє підключення файлової системи. Повинна викликатися при кожній події вставки диска. Після підключення Відключені об'єкти () отримують запит зняття стану. Файлова система автоматично додається до списку пошуку; меню малих додатків оновлюється.

【Коди помилок】

EX_ADR  : Недопустима адреса evt або dev.
EX_PAR  : Неприпустимий вміст evt.
ofat_fls
Attach Filesystem by ID
Підключення файлової системи за ID

【Синтаксис / Прототип】

W   ofat_fls(W fsid, TC *dev)

【Параметри】

W   fsid    ID файлової системи
TC *dev     Буфер для імені пристрою (або NULL)

【Значення, що повертається】

= 0     Успішне виконання
< 0     Помилка (Код помилки)

【Детальний опис】

Аналог oatt_fls(), але приймає ID файлової системи замість події.

【Коди помилок】

EX_PAR  : Неприпустимий fsid.
odet_vob
Detach via Virtual Object
Відключення пристрою через Віртуальний об'єкт

【Синтаксис / Прототип】

W   odet_vob(W vid, W mode)

【Параметри】

W   vid     ID Віртуального об'єкта
W   mode    Режим відключення

【Значення, що повертається】

= 0     Успішне виконання
< 0     Помилка (Код помилки)

【Детальний опис】

Відключає пристрій (файлову систему) Реального об'єкта vid. Усі об'єкти пристрою переходять у стан.

【Коди помилок】

EX_VID  : ID не існує.
EX_VOBJ : Є об'єкти «в обробці».
oatt_vob
Attach via Virtual Object
Підключення пристрою через Відключений об'єкт

【Синтаксис / Прототип】

W   oatt_vob(W vid, W mode)

【Параметри】

W   vid     ID Відключеного Віртуального об'єкта ()
W   mode    Режим підключення

【Значення, що повертається】

= 0     Успішне виконання
< 0     Помилка (Код помилки)

【Детальний опис】

Підключає пристрій Відключеного об'єкта vid. Відображається «Панель підключення пристрою». Після підключення — надсилається запит зняття стану.

【Коди помилок】

EX_VID  : ID не існує.
EX_VOBJ : Об'єкт не є Відключеним.
oprc_dev
Process Device Event
Обробка події пристрою

【Синтаксис / Прототип】

W   oprc_dev(EVENT *evt, TC *dev)

【Параметри】

EVENT  *evt     Подія пристрою
TC     *dev     Буфер для імені пристрою (або NULL)

【Значення, що повертається】

= 0     Успішне виконання
< 0     Помилка (Код помилки)

【Детальний опис】

Обробляє події пристрою (вставка/вилучення диска). Для вставки = oatt_fls(); для вилучення = odet_fls().

【Коди помилок】

EX_ADR  : Недопустима адреса evt або dev.
EX_PAR  : Неприпустимий вміст evt.
ofmt_vob
Format Device
Форматування пристрою через Об'єкт пристрою

【Синтаксис / Прототип】

W   ofmt_vob(W vid)

【Параметри】

W   vid     ID Об'єкта пристрою

【Значення, що повертається】

= 0     Форматовано
= 1     Скасовано
< 0     Помилка (Код помилки)

【Детальний опис】

Форматує пристрій vid. Після форматування пристрій підключається. Всі Реальні об'єкти попереднього вмісту стають недоступними.

【Коди помилок】

EX_VID  : ID не існує.
EX_VOBJ : «В обробці», відключений, не є об'єктом пристрою, або Наліпка.
ocnv_vob
Convert Virtual Object for Storage
Конвертація Віртуального об'єкта при збереженні

【Синтаксис / Прототип】

W   ocnv_vob(W org, W vid, LINK *lnk)

【Параметри】

W       org     ID контейнера (визначає цільову файлову систему)
W       vid     ID об'єкта для конвертації
LINK   *lnk     Буфер для посилання після конвертації (або NULL)

【Значення, що повертається】

= 0     Конвертація не потрібна (та сама ФС)
= 1     Створено файл-посилання (різні ФС)
< 0     Помилка (Код помилки)

【Детальний опис】

Конвертує vid для збереження у Реальному об'єкті org. Якщо на різних ФС — створюється файл-посилання на ФС org, і vid перетворюється на об'єкт цього файлу-посилання. Використовується додатками при збереженні вбудованих об'єктів.

【Коди помилок】

EX_ADR  : Недопустима адреса lnk.
EX_VID  : ID (vid або org) не існує.
EX_VOBJ : Відключений стан або Наліпка.
oopn_obj
Open Real Object (with Error Handling)
Відкриття Реального об'єкта з обробкою помилок

【Синтаксис / Прототип】

W   oopn_obj(W vid, LINK *lnk, UW omode, TC *pwd)

【Параметри】

W       vid     ID Віртуального об'єкта
LINK   *lnk     Буфер для посилання на відкритий об'єкт (або NULL)
UW      omode   Режим відкриття (F_READ, F_WRITE, F_UPDATE...)
TC     *pwd     Рядок пароля (NULL = без пароля)

【Значення, що повертається】

>= 0    Файловий дескриптор відкритого Реального об'єкта
 < 0    Помилка (Код помилки)

【Детальний опис】

Відкриває Реальний об'єкт з автоматичною обробкою помилок: при відключеному стані — показує «Панель підключення»; при помилці ФС — панель помилки; при невірному паролі — запитує пароль інтерактивно.

【Коди помилок】

EX_ADR  : Недопустима адреса lnk або pwd.
EX_VID  : ID не існує.
EX_VOBJ : Відключений стан (після відмови підключення).
EX_PWD  : Скасовано введення пароля.
ER_xxx  : Помилка файлової системи.

3.8.6 Функції-допоміжники додатків

Допоміжні розширені системні виклики — не пов'язані безпосередньо з операціями над Реальними/Віртуальними об'єктами.

aset_sel
 
Встановлення інтервалу мерехтіння рамки виділення

【Синтаксис / Прототип】

W   aset_sel(W period)

【Параметри】

W   period  Інтервал мерехтіння у мс (period <= 0 — лише повернути поточне)

【Значення, що повертається】

>= 0    Попередній інтервал

【Коди помилок】

Відсутні.

adsp_sel
 
Відображення рамки виділення

【Синтаксис / Прототип】

ERR adsp_sel(GID gid, SEL_RGN *selp, W mode)

【Параметри】

GID     gid     ID середовища малювання
SEL_RGN *selp   Область рамки виділення
W       mode    = 0 : сховати;  > 0 : показати;  < 0 : мерехтіти

【Значення, що повертається】

= 0     Успішне виконання
< 0     Помилка (Код помилки)

【Детальний опис】

Відображає/приховує/вмикає мерехтіння рамки виділення selp у середовищі малювання gid.

Поле selp->sts:

    xxxx xxxx xxxx xxxx IPBD WWWW TTTT TTTT
I =0— активний стан
1— неактивний (не відображається)
P =0— прямокутна рамка
1— многокутна (скруглення ігнорується)
B =0— не мерехтить
1— мерехтить
D =0— прихована
1— відображена
W — ширина рамки (0 = за замовчуванням)
T — лічильник інтервалу мерехтіння
x — зарезервовано

Поля B, D, T — внутрішні; змінювати їх не слід. Початкове значення T зазвичай 0.

【Коди помилок】

EX_ADR  : Недопустима адреса selp.
EG_xxx  : Помилка графічних примітивів.
adsp_slt
 
Відображення списку рамок виділення

【Синтаксис / Прототип】

ERR adsp_slt(GID gid, SEL_LIST *selp, W mode, W dh, W dv)

【Параметри】

GID      gid     ID середовища малювання
SEL_LIST *selp   Список рамок
W        mode    = 0 (сховати), > 0 (показати), < 0 (мерехтіти)
W        dh      Горизонтальне зміщення
W        dv      Вертикальне зміщення

【Значення, що повертається】

= 0     Успішне виконання
< 0     Помилка (Код помилки)

【Детальний опис】

Відображає/приховує всі рамки зі списку selp. dh, dv — зміщення координат при відображенні (для D&D).

【Коди помилок】

EX_ADR  : Недопустима адреса selp.
EG_xxx  : Помилка графічних примітивів.
apnl_men
 
Обробка меню редагування панелі (з лотком)

【Синтаксис / Прототип】

W   apnl_men(W pnid, W pid, EVENT *epv)

【Параметри】

W       pnid    ID панелі
W       pid     ID елемента текстового поля
EVENT  *epv     Подія, що ініціювала виклик

【Значення, що повертається】

= 0     Успішне виконання
< 0     Помилка (Код помилки)

【Детальний опис】

Обробляє меню редагування лотка для текстового поля pid панелі pnid. При *evt = EV_KEYDWN — клавіатурне меню; інакше відображається:

    Редагування  Копіювати до лотка      C
                 Вставити з лотка        Z
                 Перемістити до лотка    V
                 Вставити з лотка        X
                 Видалити

【Коди помилок】

EX_ADR  : Недопустима адреса epv.
achg_bgc
 
Зміна кольору фону вікна

【Синтаксис / Прототип】

W   achg_bgc(W *mask, COLOR *color, COLOR bgc)

【Параметри】

W      *mask    Маска паттерну (0~7; 0 = як колір фону Об'єкта)
COLOR  *color   Поточний колір фону (вхід/вихід)
COLOR   bgc     Колір фону Об'єкта (< 0 — заборонити опцію «як фон Об'єкта»)

【Значення, що повертається】

= 0     Без змін або скасовано
= 1     Колір змінено
< 0     Помилка (Код помилки)

【Детальний опис】

Відображає «Панель зміни кольору фону вікна» для інтерактивного вибору. Оновлює mask та color новими значеннями.

【Коди помилок】

EX_ADR  : Недопустима адреса mask або color.

Повернутися до змісту розділу Графічної оболонки
Попередня сторінка: 3.7 Примітиви вводу тексту (Повернутися)
Наступна сторінка: 3.9 Менеджер шрифтів (Перейти)