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