Matlab: Splash screen для Matlab Standalone приложений

Язык статьи: English | Русский

В Matlab можно создавать исполняемые файлы Matlab Standalone (с помощью Matlab deployment tool), которые могут запускаться на машинах без установленного Matlab (правда, требуется установить специальный набор библиотек Matlab runtime). Первый запуск такой программы на новой машине требует заметного времени (от 15 секунд). При этом само приложение никаким образом не сигнализирует о том, что оно уже запущено, и начался процесс развертывания Matlab окружения для работы программы. Следующие запуски программы будут проходить быстрее, но все равно довольно заметное время пользователь находится в неведении о том, что происходит с программой. Подробнее проблема описана здесь. Приводится и решение такой проблемы — splash screen, т.е. вспомогательное всплывающее окно, создаваемое не с помощью Matlab, которое сообщает пользователю о том, что Matlab программа запускается, и нужно немного подождать. После того, как появилось окно основной Matlab программы, вспомогательное окно пропадает. Конечно, это не ускоряет запуск самого приложения Matlab, но помогает сгладить психологический дискомфорт. Решение для Windows от Yair Altman платное, здесь же приводится бесплатный аналог на Autoit3.

Программа SplashScreenApp

Идея вспомогательной программы SplashScreenApp взята у Yair Altman Splash window for deployed applications. Создается отдельное приложение, которое

  1. Запускает основное приложение (например, приложение Matlab Standalone).
  2. Показывает всплывающее сообщение о том, что главное приложение запускается.
  3. Ищет среди запущенных приложений окно главного приложения. Как только такое окно найдено, вспомогательная программа завершается.

SplashScreenApp написан на AutoIt3 и с помощью утилиты Aut2exe (входит в комплект AutoIt3) скрипт преобразован в исполняемый файл.

Программировать на AutoIt3 оказалось довольно просто (особенно при использовании готового решения для анимации GIFAnimation.au3 от trancexx GIF in AutoIt). Поэтому функционал SplashScreenApp дублирует функционал решения от Yair Altman, а также добавлен ряд новшеств:

  • настройки приложения SplashScreenApp хранятся в отдельном ini-файле (новое),
  • можно регулировать размер всплывающего окна SplashScreenApp,
  • выбор изображение фона SplashScreenApp,
  • выбор gif-файла с анимацией прогрессбара (loading-loop) (новое),
  • можно создавать произвольное сообщение, которое будет отображаться в окне SplashScreenApp (новое)

SplashScreenApp

Синтаксис SplashScreenApp

SplashScreenApp.exe

SplashScreenApp.exe «PathToConfigIni»

SplashScreenApp.exe «PathToConfigIni» «Param1″ Param2»

SplashScreenApp.exe  считывает файл настроек по умолчанию из splash_config.ini, который должен быть в текущей директории

SplashScreenApp.exe «PathToConfigIni»  читает настройки из ini-файла с полным путем PathToConfigInipath

SplashScreenApp.exe «PathToConfigIni» «Param1″ Param2»  настройки берутся из файла по пути PathToConfigInipath, в главную программу передаются параметры Param1 и Param2

Настройки SplashScreenApp

По умолчанию файл настроек программы SplashScreenApp.exe splash_config.ini должен храниться в текущей директории. Все настройки программы разделены на три секции в ini-файле.

Cекция [Application] — Настройки основного приложения

    • exe_path

Cодержит путь в кавычках «» к основному приложению

    • exe_fig_title

Cодержит строку в кавычках «» с названием окна основного приложения. SplashScreenApp будет искать окно основного приложения по этой строке. Метод поиска строки в окнах регулируются параметром [Options]-WinTitleMatchMode

Секция[Gui] — Настройки внешнего вида всплывающего окна SplashScreenApp

    • gui_width и gui_height

Устанавливают размеры окна SplashScreenApp. Фоновый рисунок будет масштабирован под новый размер окна. Эти параметры можно не использовать (просто закомментировать). По умолчанию размер окна SplashScreenApp равен размеру картинки-фона.

    • background_path

Путь к файлу с фоновой картинкой. Формат файлов gif, png, bmp, jpg. Для картинки с прозрачностью лучше всего использовать формат gif.

    • loading_loop_path

Путь к прогрессбару. Если выбрать loading_loop_path= , то прогрессбар не будет показан. Можно регулировать размер прогрессбара и его смещение вправо/влево (ключи loop_width, loop_height, loop_left_shift(сдвиг прогрессбара слева), loop_right_shift (сдвиг прогрессбара справа), единицы — пиксели)

    • info_str

Строка-сообщение внизу сплывающего окна

Например, info_str=»Пожалуйста, подождите…nПрограмма запускается»

Символ n означает перенос на новую строку.

Свойства строки-сообщения регулируются следующими параметрами (необязательные параметры):

info_str_clr (цвет), info_str_fontname (шрифт), info_str_fontsize (размер шрифта), info_str_fontweight (стиль шрифта), info_str_fontattribute (italic, underline), info_str_alignment (выравнивание), info_string_shift (сдвиг строки в пикселях относительно прогрессбара), info_string_left_shift (сдвиг строки слева), info_string_right_shift (сдвиг строки справа).

    • loading_loop_shift_bottom

Сдвиг в пикселях прогрессбара от нижнего края окна.

Секция [Options] — Внутренние настройки

    • WinTitleMatchMode 

Метод, с помощью которого ищется соответствие строки в exe_fig_title и заглавия окон.

1 — строка exe_fig_title ищется в заглавии окна с самого начала,

2 — ищется любая подстрока в заглавие окна, совпадающая с exe_fig_title,

3 — точное соответствие строк

значения -1..-3 — знак минус означает регистро-независимый поиск

    • msg_timeout

Время в секундах, после которого будут закрыты окна с сообщениями от SplashScreenApp (по умолчанию 10 сек)

    • exe_timeout

Время, в течение которого SplashScreenApp будет искать главное приложение. Если за это время окно не будет найдено, то SplashScreenApp выдаст соответствующее сообщение.

Советы по работе с SplashScreenApp

  1. Можно создать разные ярлыки для SplashScreenApp с разными настройками запуска основной программы.
  2. Можно распространять SplashScreenApp.exe вместе с главным приложением (например,вместе с Matlab Standalone), при этом сам файл SplashScreenApp.exe можно переименовать так, как хочется.
  3. Чтобы поменять иконку SplashScreenApp.exe придется перекомпилировать исходные файлы программы на AutoIt3 с помощью Aut2exe.
  4. Файл для прогрессбара (loading-loop) можно создать с помощью сервиса http://ajaxload.info.
  5. Файл фона для SplashScreenApp можно создать с помощью PowerPoint.
  6. С помощью AutoIt3 Aut2Exe можно поменять иконку приложения SplashScreenApp.exe (иконки можно найти на сайте https://www.iconfinder.com)
  7. SplashScreenApp можно использовать не только для приложений Matlab улыбка

Файлы для скачивания

Программа SplashWindowApp.exe

SplashScreenApp.zip

Тестовая программа

RunTest_Exe.zip

Исходные файлы SplashScreenApp на базе AutoIt3

SplashScreenApp_source.zip

Поделиться с друзьями
В коробке инженера
Добавить комментарий

Нажимая на кнопку "Добавить комментарий", я даю согласие на обработку персональных данных и принимаю политику конфиденциальности