Специфікація BTRON3 (Український переклад) | Розділ 7: Графічна оболонка (GUI Shell)
Повернутися до змісту розділу Графічної оболонки
Попередня сторінка: 3.4 Менеджер панелей (Повернутися)
Наступна сторінка: 3.6 Менеджер даних (Перейти)
Менеджер трею (Tray Manager) управляє системним буфером обміну (треєм) для тимчасового
зберігання даних та передачі інформації між прикладними програмами під час операцій
вирізання (Cut), копіювання (Copy) та вставки (Paste).
У системі BTRON3 розрізняють два види треїв:
- Основний трей (Трей користувача / )
- Створюється для кожного користувача і має стекову структуру (LIFO з можливістю довільного доступу).
Дані зберігаються у вигляді записів. Кожен елемент може мати назву (до 12 символів TC).
У треї завжди один елемент перебуває у «вибраному стані» (якщо трей не порожній).
При переповненні найстаріші записи видаляються автоматично.
- Тимчасовий трей (Тимчасовий буфер / )
- Зберігає лише один блок даних (останній скопійований). Не має стекової структури
і не підтримує іменування. Застосовується для швидкого обміну даними між додатками.
Дані у треї зберігаються у форматі записів TAD (TRON Application Databox).
Основними типами записів є:
TR_TEXT (=0x0001) : Текстовий запис
- Послідовність сегментів текстового документа TAD.
TR_FIG (=0x0002) : Графічний запис
- Послідовність сегментів графічних примітивів TAD.
TR_VOBJ (=0x0003) : Запис віртуального об'єкта (посилання)
- Запис прив'язки віртуального об'єкта (VLINK + VOBJSEG).
- Прапор зв'язку (
TR_CONT = 0x4000) :
- Встановлюється у всіх розділених записах, окрім останнього.
Отримання даних з трею підтримує три режими:
- (1) Повне отримання (
rec < 0)
- Зчитується масив заголовків
TRAYREC разом із тілами даних.
- (2) Отримання заголовка (
rec = 0)
- Зчитується лише масив
TRAYREC без тіл даних (для аналізу структури).
- (3) Отримання конкретного запису (
rec > 0)
- Зчитується тіло даних вказаного за номером запису.
□ Запис трею (TRAYREC)
typedef struct {
W id; /* Тип запису (> 0) */
W len; /* Довжина даних у байтах */
B *dt; /* Вказівник на тіло даних */
} TRAYREC;
□ Запис посилання на віртуальний об'єкт (VLINK / TR_VOBJREC)
typedef struct {
TC fs_name[20];/* Назва файлової системи */
UH f_id; /* ID файлу */
UH attr; /* Тип та атрибути віртуального об'єкта */
UH rel; /* Індекс спорідненості */
UH appl[3]; /* ID прикладної програми */
} VLINK;
typedef struct {
VLINK vlnk; /* Запис зв'язку */
VOBJSEG vseg; /* Сегмент віртуального об'єкта */
} TR_VOBJREC;
Усі функції повертають від'ємний код при помилці, «0» або додатне число при успіху.
| topn_tra |
| Open Tray |
| Відкриття трею користувача |
|
【Синтаксис / Прототип】
ERR topn_tra(void)
【Параметри】
Немає
【Значення, що повертається】
= 0 Успішне виконання
< 0 Помилка (Код помилки)
【Детальний опис】
Відкриває основний трей поточного користувача. Після відкриття трей перебуває у порожньому стані.
Якщо трей уже відкрито — нічого не робить. Зазвичай викликається початковим процесом користувача.
【Коди помилок】
EX_NOSPC: Нестача системної пам'яті.
| tcls_tra |
| Close Tray |
| Закриття трею користувача |
|
【Синтаксис / Прототип】
ERR tcls_tra(void)
【Параметри】
Немає
【Значення, що повертається】
= 0 Успішне виконання
< 0 Помилка (Код помилки)
【Детальний опис】
Закриває трей користувача і видаляє його вміст. Викликається при завершенні сеансу користувача.
【Коди помилок】
EX_TRAY : Трей не відкритий.
| tpsh_dat |
| Push Data to Tray |
| Збереження даних у трей (Push) |
|
【Синтаксис / Прототип】
W tpsh_dat(TRAYREC *data, W nrec, TC *name)
【Параметри】
TRAYREC *data Масив записів для збереження
W nrec Кількість записів
TC *name Назва даних (до 12 символів TC; NULL = без назви)
【Значення, що повертається】
>= 0 Кількість збережених записів
< 0 Помилка (Код помилки)
【Детальний опис】
Зберігає nrec записів data на вершину стека трею. Збережені дані
стають «вибраними». Якщо виникає переповнення — найстаріші дані автоматично видаляються.
【Коди помилок】
EX_ADR : Недопустима адреса data або name.
EX_NOSPC: Нестача пам'яті (завеликий розмір даних).
EX_PAR : Неприпустимий nrec (<= 0) або некоректні дані запису.
EX_TRAY : Трей не відкритий.
| tpop_dat |
| Pop/Read Data from Tray |
| Отримання вибраних даних з трею |
|
【Синтаксис / Прототип】
W tpop_dat(TRAYREC *data, W size, W *a_size, W rec, TC *name)
【Параметри】
TRAYREC *data Буфер для збереження отриманих даних
W size Розмір буфера data у байтах
W *a_size Буфер для повного розміру даних (у байтах)
W rec Спосіб отримання:
< 0 : повне отримання (заголовки + тіло)
= 0 : лише заголовки (масив TRAYREC)
> 0 : тіло конкретного запису номер rec
TC *name Буфер для назви даних (мінімум 13 символів TC; NULL = не читати)
【Значення, що повертається】
>= 0 Кількість записів (при rec <= 0) або тип отриманого запису (при rec > 0)
< 0 Помилка (Код помилки)
【Детальний опис】
Зчитує вибрані дані з трею без їх видалення (вони залишаються вибраними).
Якщо data = NULL, дані не копіюються, але повний обсяг записується у *a_size.
Якщо трей порожній, повертає 0 і записує 0 у *a_size.
【Коди помилок】
EX_ADR : Недопустима адреса data, a_size або name.
EX_PAR : size <= 0, недостатній розмір буфера або неприпустимий rec.
EX_TRAY : Трей не відкритий.
| tdel_dat |
| Delete Data from Tray |
| Видалення вибраних даних з трею |
|
【Синтаксис / Прототип】
W tdel_dat(void)
【Параметри】
Немає
【Значення, що повертається】
>= 0 Нова позиція вибраних даних (0 = трей спорожнів)
< 0 Помилка (Код помилки)
【Детальний опис】
Видаляє поточні «вибрані» дані з трею. Наступний елемент стає вибраним (або попередній,
якщо видалено останній елемент).
【Коди помилок】
EX_TRAY : Трей не відкритий.
| tsel_dat |
| Select Tray Data |
| Вибір елемента у треї |
|
【Синтаксис / Прототип】
W tsel_dat(W pos)
【Параметри】
W pos Позиція елемента (1..N; <= 0 = не змінювати, повернути поточну)
【Значення, що повертається】
>= 0 Позиція вибраного елемента (0 = трей порожній)
< 0 Помилка (Код помилки)
【Детальний опис】
Встановлює елемент у позиції pos як вибраний. При pos > кількості
вибирається останній. При pos <= 0 лише повертає поточну вибрану позицію.
【Коди помилок】
EX_TRAY : Трей не відкритий.
| tmov_dat |
| Move Selected Tray Data |
| Зміна позиції вибраного елемента у треї |
|
【Синтаксис / Прототип】
W tmov_dat(W pos)
【Параметри】
W pos Нова позиція для вибраного елемента
【Значення, що повертається】
>= 0 Нова позиція елемента (0 = трей порожній)
< 0 Помилка (Код помилки)
【Детальний опис】
Переміщує поточний вибраний елемент у позицію pos. Елемент залишається вибраним.
【Коди помилок】
EX_TRAY : Трей не відкритий.
| tget_sts |
| Get Tray Status |
| Отримання стану трею |
|
【Синтаксис / Прототип】
W tget_sts(UW *size, UW *rsize)
【Параметри】
UW *size Буфер для загального обсягу даних у треї (у байтах)
UW *rsize Буфер для залишкового вільного простору (у байтах)
【Значення, що повертається】
>= 0 Загальна кількість елементів у треї
< 0 Помилка (Код помилки)
【Детальний опис】
Повертає кількість елементів у треї та записує їх сумарний розмір і вільний залишок.
【Коди помилок】
EX_ADR : Недопустима адреса size або rsize.
EX_TRAY : Трей не відкритий.
| tset_dat |
| Set Data in Temporary Tray |
| Збереження даних у тимчасовий трей |
|
【Синтаксис / Прототип】
W tset_dat(TRAYREC *data, W nrec)
【Параметри】
TRAYREC *data Масив записів
W nrec Кількість записів (0 = очистити тимчасовий трей)
【Значення, що повертається】
>= 0 Кількість збережених записів
< 0 Помилка (Код помилки)
【Детальний опис】
Зберігає дані у тимчасовий трей, замінюючи попередні. При nrec = 0 очищує його.
【Коди помилок】
EX_ADR : Недопустима адреса data.
EX_NOSPC: Нестача пам'яті.
EX_PAR : nrec < 0 або некоректні дані запису.
| tget_dat |
| Get Data from Temporary Tray |
| Отримання даних з тимчасового трею |
|
【Синтаксис / Прототип】
W tget_dat(TRAYREC *data, W size, W *a_size, W rec)
【Параметри】
TRAYREC *data Буфер для даних
W size Розмір буфера data у байтах
W *a_size Буфер для повного розміру даних
W rec Спосіб отримання (< 0: повний; = 0: заголовок; > 0: конкретний запис)
【Значення, що повертається】
>= 0 Кількість записів (rec <= 0) або тип запису (rec > 0)
< 0 Помилка (Код помилки)
【Детальний опис】
Зчитує дані з тимчасового трею без їх видалення.
【Коди помилок】
EX_ADR : Недопустима адреса data або a_size.
EX_PAR : size <= 0, малий буфер або некоректний rec.
Повернутися до змісту розділу Графічної оболонки
Попередня сторінка: 3.4 Менеджер панелей (Повернутися)
Наступна сторінка: 3.6 Менеджер даних (Перейти)