🖥 GUI
Декларативний GPU-рендеред інтерфейс. Вікно, label, button — оголошуються разом зі змінними. Рендеринг виконується на GPU автономно.
Головне вікно оголошується через /mainwindow. Всі GUI елементи — label і button — оголошуються всередині вікна. Запуск — через Main.return в ::start::.
app (/mainwindow) Main: /size = 400x300 /background = (93, 138, 168) ! ... label і button тут ... end Main ::start:: Main.return
| Параметр | Синтаксис | Опис |
|---|---|---|
| /size | /size = 400x300 |
Ширина × висота в пікселях |
| /background | /background = (93, 138, 168) або #RRGGBB |
Колір фону вікна |
Label відображає значення /var змінної в реальному часі. GPU автоматично оновлює текст при зміні змінної — CPU не бере участі в рендері.
app (/intbyte, /var) intbyte = 42 app (/mainwindow) Main: /size = 400x300 /background = (93, 138, 168) app (/label) onelabel = (intbyte) end Main
onelabel відображає поточне значення intbyte. Коли intbyte змінюється — GPU оновлює текст автоматично.
/intbyte, /int2, /int4, /int8 та їх знакові варіанти. Значення відображається як ціле число.
Кнопка оголошується з текстом і прив'язкою до події через #event_name. При натисканні — виконується відповідний perform блок.
app (/mainwindow) Main: app (/button) onebutton = "Натисни мене"#click end Main
#click — ім'я події. Кнопка може існувати без події.
Perform блок прив'язується до GUI події через :#event_name. Коли кнопка з цією подією натискається — виконуються всі операції всередині perform.
app (/intbyte, /var) intbyte = 42 app (/intbyte, /var) inta = 28 perform Click()(intbyte, inta)():#click intbyte + (inta) /display(intbyte) end Click app (/mainwindow) Main: /size = 400x300 /background = (93, 138, 168) app (/label) onelabel = (intbyte) app (/button) onebutton = "Натисни мене будь ласка"#click end Main ::start:: Main.return
intbyte збільшується на inta, label оновлюється, значення виводиться в консоль.
#click) з'єднує кнопку і perform. Ім'я довільне — головне щоб збігалось в обох місцях.
Модифікатор &mm_color задає умовне забарвлення label залежно від значення змінної. Колір змінюється автоматично — без додаткового коду.
app (/intbyte, /var) intbyte = 42 app (/mainwindow) Main: app (/label) presslabel = (intbyte)&mm_color((100+, #E32636), (5-, (93, 138, 168))) end Main
| Синтаксис умови | Значення |
|---|---|
| (100+, #E32636) | якщо значення ≥ 100 → колір #E32636 |
| (5-, (93,138,168)) | якщо значення ≤ 5 → колір RGB |
| (без умови) | дефолтний колір — чорний |
&mm_color приймає довільну кількість умов. Умови перевіряються зліва направо — перша що виконується визначає колір.
Програма з двома label, кнопкою і умовним кольором. Натискання кнопки збільшує intbyte — label оновлюється, колір змінюється автоматично.
app (/intbyte, /var) intbyte = 42 app (/mainwindow) Main: /size = 800x600 /background = (20, 20, 30) app (/label) presslabel = (intbyte)&mm_color((100+, #E32636), (5-, (93, 138, 168))) app (/button) BtnUp = "Більше"#up app (/button) BtnDown = "Менше"#down end Main perform Up()(intbyte)():#up intbyte + (10) end Up perform Down()(intbyte)():#down intbyte - (10) end Down ::start:: Main.return
/size— розміри в пікселях./background— RGB або HEX колір фону.Main.returnзапускає вікно і передає керування GPU.