wiki:kassaSSStructure

Version 7 (modified by sokol, 16 місяців ago) (diff)

--

Структура каси самообслуги

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

Загальні принципи

Як відбувається зміна стилів описано [wikw:styles в цьому розділі].
Проте окрім індивідуальних стилів, для каси самоомбслуговування розроблено систему, генерації інтерфейсу на основі файлів із індивідуальною структурою основного вікна. По суті це звичайні .xml файли що лежать в каталозі ./frames. Активну структуру можна підключити, змінивши в файлі kassa_ss.ini в секції [Place] .. FramesType?="структура.xml". Внесення змін в ці файли дозволяє переміщувати, створювати або приховувати ті чи інщі елементи інтерфейсу програми.

Позиціонування

З дебільшого елементи позиціонування не відображаються (окрім рідкісних випадків) і служать лише для задання правил відображення елементів, які вміщують всередині себе.

Макети

Макети є вкладеними структурами системи, що можуть вміщувати інші слої та елементи. Для створення макета необхідно додати тег:

<Layout параметри>...</Layout>

Фактично макети служать для групування інших елементів та розміщення їх по горизонталі чи вертикалі. За замовчуванням елементи розтягнуться по горизонталі.
Макет може містити наступні додаткові параметри:

  • direction="орієнтація" - напрям орієнтації внутрішніх елементів. Допустимі значення:
    • "vertical" - вертикальне (в стовпчик);
    • "horizontal" - горизонтальне;
  • frame="назва" - звичайні макети не відображаються на екрані. Проте додавання даного, не порожнього, параметру дозволить задати певну візуальну стилізацію зони, під елементами макету. В таблиці стилів для цього потрібно задати відповідний стиль QFrame#назва { ... }.

Розтягування

Елемент розтягування, доданий в <Layout> притискає інші елементи, роблячи певні проміжки. Їх зручно уявляти як пружини, що розсувають інщі блоки.

<Stretch />

Кнопки

Кнопки є інтерактивними елементами, що дозволяють користувачу виконувати певні дії. Зазвичай кнопка може містити напис, іконку, або і те й інше.

<Button параметри>напис</Button>

Напис може бути довільним, проте зручно використовувати символи Unicode у вигляді &#код;. Наприклад: &#x2700 - є символом ножицьб або &#x270e; - символ олівця. Безліч кодів можна в інтернеті.
Параметри:

  • signal="сигнал" - фактично цей сигнал буде надісланий кнопкою системі для розуміння того, що має відбутись. Наразі список допустимих сигналів є наступним:
    • "payment" - провести оплату. Зазавичай для повноцінної роботи програми достатньо кнопки з цим сигналом;
    • "delete" - видалення поточного запису (того, на якому встановлено курсор в <Records>);
    • "clear" - видалити всі записи з поточного чеку;
  • icon="картинка" - назва файла з картинкою, з каталогу ./images. Якщо параметр відсутній то зображення не відображатиметься;

Стилі для кнопок задаються у вигляді QPushButton#сигнал { ... }

Записи в чекові

По суті, це список, обраних клієнтом товарів.

<Records параметри />

Параметри:

  • type="grid" - наразі єдиним видом відображення товарів є проста таблиця ("grid"). В перспективі цей список планується розширити більш складними елементами;
  • del_caption="напис" - напис на кнопці видалення запису, навпроти товару;

Фільтр товарів

Фільтр, в якому відбуватиметься пошук товарів.

<Filter параметри />

Параметри:

  • type="editor" - наразі це лише один вид фільтра. Це звичайне поле вводу. У випадку віртуальної клавіатури, набір кнопок задається в параметрі file="файл_клавіатури". В перспективі будуть розроблені інші виду пошуку;
  • file="digital_int" - файл клавіатури з каталогу ./vkbd;

Написи

Написи можуть містити певну форматовану інформацію. Тексти повідомлень можуть містити певні динамічні дані у форматі: {:назва}. Замість тексту може бути відображено картинку (див. параметр icon).

<Label параметри>напис</Label>

Параметри:

  • id="ідентифікатор" - ідентифікатор для стилю. Може бути не унікальним;
  • icon="картинка" - назва файла з картинкою, з каталогу ./images. !!! УВАГА: Для відображення картинки текст повинен бути відсутній .

Стилі написів задаються у вигляді QLabel#ідентифікатор { ... }

Допустимі назви вставок типу {:назва}:

  • {:sum_discounted} - сума чека після дії знижок;
  • {:sum_discount} - сума знижок;

В подальшому список буде розширюватись.