1. В исходных кодах использовать префикс корня **CMAKE_INSTALL_PREFIX** для сборки приложений. Например, `CMAKE_INSTALL_PREFIX/share`.
1. В исходных кодах использовать префикс корня **DESTDIR** и **PREFIX** для всех путей, за исключением файлов иконок, .policy и любых файлов, устанавливающихся в папку утилиты (.csv).
1. Bash/C: Весь функционал сосредоточен в графической части, вызовы и исполнение процедур написаны на языках Bash, C
1. Bash/C: Весь функционал сосредоточен в графической части, вызовы и исполнение процедур написаны на языках Bash, C
**/com/ublinux/images/${NAME_APPLICATION}_banner.png** - собирается в бинарник.
1. Локализация En/Ru
1. Локализация En/Ru
1. Для локализации должен быть создан файл-шаблон ***\${NAME_APPLICATION}.pot***, на его основе должны быть созданы сами ***po-файлы*** переводов на необходимые языки, через файл сборки из po-файлов компилируются ***mo-файлы*** и размещаются сценарием установки по указанному пути:
1. Для локализации должен быть создан файл-шаблон ***\${NAME_APPLICATION}.pot***, на его основе должны быть созданы сами ***po-файлы*** переводов на необходимые языки, через файл сборки из po-файлов компилируются ***mo-файлы*** и размещаются сценарием установки по указанному пути:
- Вывод файлов csv так же должен быть локализован средствами pot-, po-, mo- файлов.
- Вывод файлов csv так же должен быть локализован средствами pot-, po-, mo- файлов.
1. Версия ПО
1. Версия ПО
1. Файл, в котором хранится версия - VERSION.md, находится в корне каталога проекта.
1. Версия устанавливается через тэги гита в формате v1.0, через команду
1. При компиляции (через сценарий make-файла) данные из файла VERSION.md передаются в значение переменной (-ых) version_application в файлах-исходниках ПО.
`git describe --abbrev=0 --tags | sed 's/^v//'`
тэг получается и передаётся в переменную `string version_application`, находящуюся в заголовочном файле исходников утилиты.
1. **ТЕХНИЧЕСКОЕ ЗАДАНИЕ:**
1. **ТЕХНИЧЕСКОЕ ЗАДАНИЕ:**
1. Ярлык (desktop-файл):
1. Ярлык (desktop-файл):
@ -62,11 +63,13 @@
1. Наличие элементов интерфейса:
1. Наличие элементов интерфейса:
1. Статических - не меняют свою ширину при изменении размеров окна или родительского элемента.
1. Статических - не меняют свою ширину при изменении размеров окна или родительского элемента.
1. Динамических - меняют свою ширину при изменении размеров окна или родительского элемента. Обычно занимают пространство от края до края окна или родительского элемента, либо пространство от рядом расположенного элемента до до края окна или родительского элемента.
1. Динамических - меняют свою ширину при изменении размеров окна или родительского элемента. Обычно занимают пространство от края до края окна или родительского элемента, либо пространство от рядом расположенного элемента до до края окна или родительского элемента.
1. Минимальный размер окна до прекращения масштабирования 800 на 600 пикселей.
1. Геометрия окна:
1. Минимальный размер окна до прекращения масштабирования 800 на 600 пикселей.
1. Изначальный размер окна по высоте должен соответствовать его содержимому, но не превышать 600 пикселей.
1. Шапка в стиле приложений GTK3 с содержимым:
1. Шапка в стиле приложений GTK3 с содержимым:
1. Иконка приложения. Статический элемент. Выравнивание по левому краю.
1. Иконка приложения. Статический элемент. Выравнивание по левому краю.
1. Кнопка с выпадающим списком "Загрузить" -> ("Загрузить глобальную конфигурацию, Загрузить локальную конфигурацию"). Статический элемент. Выравнивание по левому краю.
1. Кнопка с выпадающим списком "Загрузить" -> ("Загрузить глобальную конфигурацию, Загрузить локальную конфигурацию"). Статический элемент. Выравнивание по левому краю.
1. Заголовок окна, название приложения. Выравнивание по центру между элементами.
1. Заголовок окна, название приложения. Выравнивание по центру между элементами. Шрифт - bold.
1. Кнопка с выпадающим списком "Сохранить" -> ("Сохранить в глобальную и локальную конфигурацию, Сохранить в глобальную конфигурацию, Сохранить в локальную конфигурацию"). Статический элемент. Выравнивание по правому краю.
1. Кнопка с выпадающим списком "Сохранить" -> ("Сохранить в глобальную и локальную конфигурацию, Сохранить в глобальную конфигурацию, Сохранить в локальную конфигурацию"). Статический элемент. Выравнивание по правому краю.
1. Кнопка с иконкой с выпадающим списком -> "Справка, О приложении". Статический элемент. Выравнивание по правому краю.
1. Кнопка с иконкой с выпадающим списком -> "Справка, О приложении". Статический элемент. Выравнивание по правому краю.
1. Стандартные элементы окна, кнопки "Свернуть, Минимизировать/На весь экран, Закрыть"
1. Стандартные элементы окна, кнопки "Свернуть, Минимизировать/На весь экран, Закрыть"
- Параметр не задан пользователем и может быть получено значение используемое по умолчанию - выводим это значение (в зависимости от типа интерактивного элемента) и добавляем символ "*" в верхнем регистре.
- Параметр не задан пользователем и может быть получено значение используемое по умолчанию - выводим это значение (в зависимости от типа интерактивного элемента) и добавляем символ "*" в верхнем регистре.
- Параметр не задан и не может быть получен - выводим текстовое значение "По умолчанию" (в зависимости от типа интерактивного элемента).
- Параметр не задан и не может быть получен - выводим текстовое значение "По умолчанию" (в зависимости от типа интерактивного элемента).
- Если пользователь выбирает в качестве значения параметра вариант "По умолчанию" (в зависимости от типа интерактивного элемента), то после сохранения значение этого поля должны принять вид согласно двум вышеописанным условиям.
- Если пользователь выбирает в качестве значения параметра вариант "По умолчанию" (в зависимости от типа интерактивного элемента), то после сохранения значение этого поля должны принять вид согласно двум вышеописанным условиям.
1. При выходе/закрытии приложения, если есть не сохранённые изменения, выводить диалоговое окно с предупреждением о несохранённых изменениях с возможностью вернуться в приложение и сохранить изменения или выйти без сохранения.
1. *--lock-save-local* - делать неактивным пункт "Сохранить локальную конфигурацию" в выпадающем списке кнопки "Сохранить".
1. *--lock-save-local* - делать неактивным пункт "Сохранить локальную конфигурацию" в выпадающем списке кнопки "Сохранить".
1. *--lock-save-global* - делать неактивным пункт "Сохранить глобальную и локальную конфигурацию" и "Сохранить глобальную конфигурацию" в выпадающем списке кнопки "Сохранить".
1. *--lock-save-global* - делать неактивным пункт "Сохранить глобальную и локальную конфигурацию" и "Сохранить глобальную конфигурацию" в выпадающем списке кнопки "Сохранить".
1. *--lock-load-global* - делать неактивным пункт "Сохранить глобальную и локальную конфигурацию" и "Загрузить глобальную конфигурацию" в выпадающем списке кнопки "Загрузить".
1. *--lock-load-global* - делать неактивным пункт "Сохранить глобальную и локальную конфигурацию" и "Загрузить глобальную конфигурацию" в выпадающем списке кнопки "Загрузить".
1. **КОНФИГУРАЦИОННЫЙ ФАЙЛ УТИЛИТЫ**
Утилита может создавать и использовать собственный конфигурационный файл, расположенный по пути **~/home/.config/${NAME_APPLICATION}/\${NAME_APPLICATION}.cfg**, для:
1. Хранения информации о геометрии окна.
1. Хранение информации о положении окна.
1. Хранения вспомогательной информации для работы утилиты (зависит от специфики работы самой утилиты).