0.1
Описание
Основное назначение адд-она, отобразить пользователю процесс запуска приложения.
Адд-он был придуман в процессе разработки PQStudio, так как при инициализации большого количества элементов в окне, окно появлялось не сразу и не всегда было понятно приложение запускается или оно упало в следствии какой то ошибки.
Как уже было продемонтрированно ранее в группе в ВК есть видео демонстрации работы аддона.
При старте приложения он отображает QFrame с прозрачным фоном и прогресс загрузки компанентов. Вся загрузка происходит в фоновом режиме для которого используется поток.
При инициализации Загрузчик получает данные из файла конфигурации Loader.json, который находится в дочерней директории приложения или ресурсах. Указание дочерней директории обязательно, так как в дальнейшем при разработке будет меньше путаницы где что лежит. И все конфигурационные файлы можно будет хранить в одном месте.
Содержание конфигурацинного файла:
- Code:
[ { "name" : "Имя которое будет отображаться при выполнении загрузки", "class" : "ClassName", "path" : "Путь к файлу от корневой директории приложения или ресурсов", "init" : true or false - Параметр, который отвечает за инициализацию компанента при загрузке, "resource" : true or false - Параметр, который отчевает за загрузку копанента из русерсов или нет } ]
- Code:
[ { "name" : "UI Elements", "class" : "MyToolBtn", "path" : "ui/", "init" : false, "resource: : true }, { "name" : "Controllers", "class" : "MainController", "path" : "Controllers/", "init" : true, "resource" : false } ]
Параметр "class" - Название класса, должно полностью совпадать с названием файла который необходимо подключить
Параметр "path" - Относительный путь к файлу от корневой директории приложения или ресурсов. Обязательно на конце должен быть слешь
Параметр "init" - Отвечает за инициализацию класса при загрузке
Параметр "resource" - Отвечает за загрузку компанента из ресурсов приложения
Пути к файлам из примера:
Если параметр "resource" установлен в true то компонент будет загружен из ресурсов приложения
/res/ui/MyToolBtn.php
В противном случаем из директории приложения
%APP_PATH%/Controllers/MainController.php
Зависимости
Для корректной радоты необходимы подключенные адд-оны Storage и Style
Так же необходимо расширение для движка PQEngineFS
Использование
Так как адд-он работает в фоновом режиме его необходимо объявлять как свойство объекта
- Code:
class MainWindow extends QWidget { /** Загрузчик */ private $loader; public function __construct() { parent::__construct(); /** Инициализируем Загрузчик */ $this->loader = new Loader('system', false, R('Welcome.png'), 512, 512); /** Соединяем сигнал Загрузчика о завершении загрузки с публичным методом */ $this->loader->connect(SIGNAL('completed()'), $this, SLOT('show()')); /** Запускаем Загрузчик компанентов */ $this->loader->start(); } }
Все компаненты у которых параметр "init" установлен в true будут инициализированы и переданы в Storage как свойства c названием из параметра "class"
В дальнейшем получить эти классы можно так $controller = $this->storage->ClassName
Все классы которые были не инициализированны при загрузке можно инициализировать в любой момент
стандартным объявлением класса $class = new ClassName();
Внимание!
Необходимо обратить внимание на то что последовательность загрузки компанентов описанная в файле очень важна.
Лучще всего все компаненты у которых параметр "init" утановлен в false уставить первыми в списке.
Если компанент использует загружаемый компанент то он должен находится после загрузки используемого компанента.
В противном случаем вы увидите что загрузка остановилась и ничего не происходит
Аргументы передаваемые классу
- Code:
/** * Loader constructor. * @param string $path - Дочерняя диреткория приложения в которой расположен файл Loader.json * @param bool $resource - Параметр отвечает за нахождение файла конфигурации в ресурсах или нет * @param string $image - Путь к изображению для фоновой завтавки * @param int $imageWidth - Ширина фонового изображения * @param int $imageHeight - Высота фонового изображения */
За фоновое изображение отвечают аргументы $image, $imageWidth и $imageHeight.
Если ширина фонового изображения меньше 400px то ширина окна Загрузчика будет равна 400, в противном случаем ширине изображения.
Если вы хотите чтобы отображаемые надписи при загрузке были локализованы на язык приложения то необходимо добавить в файл локализации две секции <unit> и задать язык локализации перед инициализацией Загрузчика
- Code:
<unit> <source>Loading components</source> <tr>%Ваш перевод%</tr> </unit> <unit> <source>Loading component</source> <tr>%Ваш перевод%</tr> </unit>
Если данного файла нет то будет применен стиль прописанный в самом загрузчике
- Code:
QLabel { color: #323232; font-size: 12px; } QLabel#Message { padding-left: 5px; background: #cfcfcf; border-top-left-radius: 6px; border-top-right-radius: 6px; } QProgressBar { background: #cfcfcf; height: 10px; border-bottom-left-radius: 6px; border-bottom-right-radius: 6px; } QProgressBar::chunk { background-color: #276ccc; border-bottom-left-radius: 6px; border-bottom-right-radius: 6px; }
Loader_0.1.7z
Архив необходимо скачать и распаковать в директорию addons установленной программы PQBuilder
Пример пути куда необходимо распаковывать архив:
C:\Program FIles (x86)\PQBuilder\addons