= Структура каси самообслуги =
На відміну від програми, з якою працюють працівники магазину, з касою самообслуговування працюють клієнти закладу і тому зовнішній вигляд інтерфейсу програми має надзвичайно важливе значення. Крім того форма та розширення монітору може дуже відрізнятись від звичайних. Це додає особливі вимоги до кастомізації саме даного модуля.
* [#point1 Загальні принципи]
* [#point2 Позиціонування]
* [#point3 Кнопки]
== [=#point1 Загальні принципи] ==
Як відбувається зміна стилів описано [wikw:styles в цьому розділі].[[br]]
Проте окрім індивідуальних стилів, для каси самоомбслуговування розроблено систему, генерації інтерфейсу на основі файлів із індивідуальною структурою основного вікна. По суті це звичайні .xml файли що лежать в каталозі ./frames. Активну структуру можна підключити, змінивши в файлі kassa_ss.ini в секції [Place] .. FramesType="структура.xml". Внесення змін в ці файли дозволяє переміщувати, створювати або приховувати ті чи інщі елементи інтерфейсу програми.
== [=#point2 Позиціонування] ==
З дебільшого елементи позиціонування не відображаються (окрім рідкісних випадків) і служать лише для задання правил відображення елементів, які вміщують всередині себе.
=== Макети
Макети є вкладеними структурами системи, що можуть вміщувати інші слої та елементи. Для створення макета необхідно додати тег:
{{{
#!xml
...
}}}
Фактично макети служать для групування інших елементів та розміщення їх по горизонталі чи вертикалі. За замовчуванням елементи розтягнуться по горизонталі.[[br]]
Макет може містити наступні додаткові параметри:
* '''direction="орієнтація"''' - напрям орієнтації внутрішніх елементів. Допустимі значення: ''"vertical"'' - вертикальне (в стовпчик) або ''"horizontal"'' - горизонтальне
* '''frame="назва"''' - звичайні макети не відображаються на екрані. Проте додавання даного, не порожнього, параметру дозволить задати певну візуальну стилізацію зони, під елементами макету. В таблиці стилів для цього потрібно задати відповідний стиль ''QFrame#назва { ... }''.
=== Розтягування
Елемент розтягування, доданий в '''''' притискає інші елементи, роблячи певні проміжки. Їх зручно уявляти як пружини, що розсувають інщі блоки.
{{{
#!xml
}}}
== [=#point3 Кнопки] ==
Кнопки є інтерактивними елементами, що дозволяють користувачу виконувати певні дії. Зазвичай кнопка може містити напис, іконку, або і те й інше.
{{{
#!xml
}}}
Напис може бути довільним, проте зручно використовувати символи Unicode у вигляді '''код;'''. Наприклад: ✀ - є символом ножицьб або ✎ - символ олівця;
Параметри:
* '''signal="сигнал"''' - фактично цей сигнал буде надісланий кнопкою системі для розуміння того, що має відбутись. Наразі список допустимих сигналів є наступним:
* "payment" - провести оплату. Зазавичай для повноцінної роботи програми достатньо кнопки з цим сигналом;
* "delete" - видалення поточного запису (того, на якому встановлено курсор в );
* "clear" - видалити всі записи з поточного чеку;
* '''icon="картинка"''' - назва файла з картинкою, з каталогу ''./images''. Якщо параметр відсутній то зображення не відображатиметься;