На главнуюКонтактыКарта сайта
В коробке инженера
В коробке инженера
Обзоры программ, интересных блогов и программирование
Заметки о Rastrwin, Matlab
  • Twitter Colee

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

Автор: priester | Рубрика: Креатив » Программы » Matlab
Среда, 27 августа 2014 г.
Теги: , , Просмотров: 17645
Язык статьи: 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 11

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

RunTest_Exe.zip 6

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

SplashScreenApp_source.zip 7


Поделиться с друзьями:
twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru digg.com blogger.com livejournal.ru google.com yandex.ru del.icio.us
Оставьте комментарий!

Используйте нормальные имена

Ваш E-mail не публикуется, используется для обратной связи и для выбора аватара с сайта gravatar.com

Публикуется вместе с комментарием

усмешка LOL сыр улыбка подмигнуть ухмылка глаза в сторону в тупике удивление большое удивление малинка пустое лицо сдвинутая бровь Оо гррр ох ох неудачник смущенный больной Тау хммм бешенный злой клевый поцелуй шок крутой недовольный

Запрещается оскорблять окружающих и использовать ненормативную лексику

Вы должны включить JavaScript, чтобы оставить сообщение