0.1
Описание
Основное назначение адд-она, отобразить пользователю процесс запуска приложения.
Адд-он был придуман в процессе разработки PQStudio, так как при инициализации большого количества элементов в окне, окно появлялось не сразу и не всегда было понятно приложение запускается или оно упало в следствии какой то ошибки.
Как уже было продемонтрированно ранее в группе в ВК есть видео демонстрации работы аддона.
При старте приложения он отображает QFrame с прозрачным фоном и прогресс загрузки компанентов. Вся загрузка происходит в фоновом режиме для которого используется поток.
При инициализации Загрузчик получает данные из файла конфигурации Loader.json, который находится в дочерней директории приложения или ресурсах. Указание дочерней директории обязательно, так как в дальнейшем при разработке будет меньше путаницы где что лежит. И все конфигурационные файлы можно будет хранить в одном месте.
Содержание конфигурацинного файла:
- Код:
[
{
"name" : "Имя которое будет отображаться при выполнении загрузки",
"class" : "ClassName",
"path" : "Путь к файлу от корневой директории приложения или ресурсов",
"init" : true or false - Параметр, который отвечает за инициализацию компанента при загрузке,
"resource" : true or false - Параметр, который отчевает за загрузку копанента из русерсов или нет
}
]
Пример конфигурационного файла:
- Код:
[
{
"name" : "UI Elements",
"class" : "MyToolBtn",
"path" : "ui/",
"init" : false,
"resource: : true
},
{
"name" : "Controllers",
"class" : "MainController",
"path" : "Controllers/",
"init" : true,
"resource" : false
}
]
Параметр "name" - Имя которое будет отображается над прогресс баром загрузки
Параметр "class" - Название класса, должно полностью совпадать с названием файла который необходимо подключить
Параметр "path" - Относительный путь к файлу от корневой директории приложения или ресурсов. Обязательно на конце должен быть слешь
Параметр "init" - Отвечает за инициализацию класса при загрузке
Параметр "resource" - Отвечает за загрузку компанента из ресурсов приложения
Пути к файлам из примера:
Если параметр "resource" установлен в true то компонент будет загружен из ресурсов приложения
/res/ui/MyToolBtn.php
В противном случаем из директории приложения
%APP_PATH%/Controllers/MainController.php
Зависимости
Для корректной радоты необходимы подключенные адд-оны Storage и Style
Так же необходимо расширение для движка PQEngineFS
Использование
Так как адд-он работает в фоновом режиме его необходимо объявлять как свойство объекта
- php Код:
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();
}
}
В противном случае GarbageCollector PHP просто убъет Загрузчик.
Все компаненты у которых параметр "init" установлен в true будут инициализированы и переданы в Storage как свойства c названием из параметра "class"
В дальнейшем получить эти классы можно так $controller = $this->storage->ClassName
Все классы которые были не инициализированны при загрузке можно инициализировать в любой момент
стандартным объявлением класса $class = new ClassName();
Внимание!
Необходимо обратить внимание на то что последовательность загрузки компанентов описанная в файле очень важна.
Лучще всего все компаненты у которых параметр "init" утановлен в false уставить первыми в списке.
Если компанент использует загружаемый компанент то он должен находится после загрузки используемого компанента.
В противном случаем вы увидите что загрузка остановилась и ничего не происходит
Аргументы передаваемые классу
- php Код:
/**
* 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> и задать язык локализации перед инициализацией Загрузчика
- Код:
<unit>
<source>Loading components</source>
<tr>%Ваш перевод%</tr>
</unit>
<unit>
<source>Loading component</source>
<tr>%Ваш перевод%</tr>
</unit>
Так как Загрузчик использует адд-он Style, то можно задать собственный стиль для элементов. Для этого необходимо инициализировать адд-он Style перед тем как будет инициализирован Загрузчик. Так же в теме оформления должен находится файл Loader.qss
Если данного файла нет то будет применен стиль прописанный в самом загрузчике
- Код:
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