Кастомизация iCarDS
Вложений: 3
Похоже, связка фронта iCarDS и скина CFStyle как в свое время народ и партия - едины... Но в проекте, над которым сейчас работаю, возникла необходимость кардинально переписать интерфейс скина.
Ну, фигли нам, кабанам: чай SkinEditor - это, практически, наше всё, фотошоп тоже ранее не только видели, но и за менюшки щупали неоднократно, так что - флаг в руки, и у перед! Однако ж обломался... Те, кто ранее перерисовывал роадраннеровские скины под себя - технологию этого процесса знают досконально: открываешь в SkinEditorе пациента и все как на ладони. Кнопки, индикаторы, флешки, их координаты, прописанные на них команды. Редактируй-не хочу... Открываешь CFStyle... Хочу-не редактируется. То есть редактируется, конечно - остро теоретически. Но поскольку сама идеология построения этого скина иная - очевидные вещи не работают. Открываем главный Skreen - menu. Ничего похожего на то, что мы видим во фронте на этом месте нет: рис.1 аттача Понятно, что все кнопки интерфейса (не графические их файлы - эти-то уже понятно, что в другом месте), их текстовое описание - лежат где-то отдельно. Пробуем найти - по содержимому вроде бы интересны файлы 1.txt, 2.txt и т.п. В том же эдиторе воспроизводим их : рис.2, рис.3 аттача Анализируя содержимое файлов *.skin понимаем, что отдельные скрины обращаются к упомянутым текстовым файлам для подгрузки в себя тех или иных комбинаций кнопок - уже что-то, но яснее не становится. Может, поковырять main_screens.ini? В первой же строке - ага: Код:
screen_main_img=main.png В общем, с задачей перерисовать интерфейс фронта в минималистическом стиле - пяток пользовательских кнопок по нижней части экрана (из которых две - настройка и закрытие фронта) плюс пара окон под флеш и встроенное с помощью ProgScriptNew.exe окно внешнего приложения, я позорно не справился... :blush: Буду признателен за любую (пусть даже теоретическую) помощь в этом вопросе. |
Давай по порядку, ты говоришь что хочешь обрезать, а я отвечаю как это сделать.
Допустим - нужно чтобы главное меню выглядело так (скриншот). А я подскажу, что и где лежит, и куда это надо вставить. RRSkinEditor прекрасно с этим справляется, только при соблюдении определённых правил |
Вложений: 1
Ок! В аттаче вчерне набросанный скелет главного меню: нижний ряд - кнопки (B1-B3 пользовательские, B4, B22 - настройка и закрытие фронта), одно окно под флеш, одно - под индикаторы, одно под приложение, встраиваемое скриптом.
|
Цитата:
А лучше опиши для начала, какой функционал будешь делать и какие экраны будут нужны, просто у меня создаётся ощущение, что легче будет сделать с нуля, чем обрезать CFStyle |
Хм, дареное в прок не идет - эдак я ничему не научусь... С другой стороны, было бы наглостью проситься в подмастерья.
Хорошо. Озвучиваю ТЗ: на компе будет завязана система "умного дома". Скелет приведен действительно для главного меню скина. Пока реально работает лишь система подъездного видеонаблюдения и GSM сигнализация квартиры. Последняя по СОМ-порту заливается рабочими конфигурациями (тревожные телефоны, голосовые сообщения, логика срабатывания датчиков и т.п. вещи) - т.е. одна из пользовательских кнопок будет вызывать ее сервисную прогу. Полагаю, со встраиванием ее особых проблем не будет - там хитростей никаких вроде нет. Название перехватываемого окна сейчас сказать не могу, посмотрю вечером. Второй экран - веб интерфейс видеорегистратора на 4 камеры. Ввиду того, что на 9 дюймовом экране даже с одной камеры картинка не слишком большая (а штатно выводится блок из 4 превьюшек + панель управления) - браузер будет настроен на стартовую страницу ВИ по умолчанию и открываться должен без обрамления вообще, в полный экран. При этом кнопки закрытия приложения и перехода в главное меню скина все же нужны (в overlay-варианте). Третий экран - на перспективу под Ардуино. Сигналка сама имеет некоторое количество входов/выходов и мозги, чтобы отрабатывать прошитые алгоритмы (т.е. может сообщить звонком об утечке воды или газа, о текущей температуре, зажигать свет, включать кондей и т.п.) В связке же с Арду можно нагородить еще больше, и благо некоторый опыт в этом есть - этот экран будет использоваться для вызова проги (пока еще не написанной) для управления Ардуиной. На экране же главного меню (помимо кнопок) планируется флеш с часами и календарем, вывод параметров системы (температура, загрузка проца и т.п.) и (не знаю, правда, насколько это осуществимо) - вывод блока прогноза погоды на 10 дней отсюда. Пока, чтобы не путаться с вводом адресов, это внутреннее противоречие планировалось разрулить за счет применения в системе двух разных браузеров с разными стартовыми страницами (IE для видеонаблюдения и FF для погоды). Хотя, не уверен, что ProgScriptNew.exe сможет справиться с такой задачей - отобразить в окне главного меню вырезанный с интернет-страницы графический блок... Вот вкратце как-то так. |
Как я и подозревал, из-за пяти, максимум десяти экранов не стоит перелопачивать почти 500 экранов CFStyle.
Значит так. 1. Рисуешь экран главного меню, расставляешь там всё как тебе нужно, это ты умеешь, если планируешь что флеш с часами и календарём должен меняться, то сразу задаёшь в skin.ini переменную main_flash=clock.swf , а в параметре флеша пишешь "$skinpath$Flash\$main_flash$". Тогда потом можно будет сделать выбор нужной флешки из папки Flash, находящийся в папке скина. Погоду тоже вывести можно, но об этом позже. 2. По поводу видеорегистратора, тоже осуществимо, но при условии встраивания внешнего браузера, можно IE, но удобнее будет с Firefox, встраивать придётся через скрипт ProgScriptNew. Хотя можно попробовать и с внутренним брайзером, без скрипта, так как тебе нужен именно весь экран, а не его часть. 3. А с программой GSM сигнализации проблем вообще не вижу. В общем всё можно сделать с нуля за пару дней. Если захочешь делать какие то настройки (цвета кнопок, выбор фона, выбор флешки и т.д), то можно будет просто взять куски из CFStyle и всё. Так что лучше начинай с нуля, быстрее будет. |
Т.е. сейчас фактически я рисую скин для икара (независимый от CFStyle), требования к которому не отличаются от требований к скинам для RR, а потом добиваю его отдельными кусками от твоего (окно браузера и т.п.)?
При разрешении монитора 1024х756 размеры графики скина такие же, или сразу делать 1024х600 (почему, кстати, для CFStyle выбран такой размер?)? |
Цитата:
Цитата:
В CFStyle такой размер потому что у меня в машине стоят EEE901 и EEE900, а у них мониторы 1024х600 так и рисовал. Как потом оказалось это наиболее оптимальное разрешение, для скина который должен работать в пяти разрешениях. |
Понял, благодарю!
|
Вложений: 2
Ну, в общем набросал костяк - проект скина в аттаче, функционал описан выше, внешний вид планируется примерно как на картинке.
Пока непонятка, как организовать браузер (вкладка "Камеры") и захват окна с Интелликаста... |
Классс!!! Очень красиво!!!
|
2 odessit
Сенкс! Теперь бы еще функционалом наполнить... |
Цитата:
|
Вложений: 1
Ок! На эскизе - внешний вид интерфейса регистратора. Надо его вписать в 1024х756 без обрамления (т.е. все панели самого браузера не нужны). А вот оверлеевские кнопки закрытия приложения и возврата в скин меню (можно, кстати, эти функции совместить в одной единственной кнопке) были бы весьма желательны...
Да, нативные размеры окна - 1056х673, но если низ картинки будет обрезан - не страшно: двойным кликом по камере ее картинка разворачивается на весь экран, и так же сворачивается, так что париться с этим параметром смысла особого нет. |
Цитата:
И WBROWSER.SKIN в нем задай область A,0,0,1024,768, и такую строчку Script,OnScreenStart,WEBURL;адрес_твоего_регистратора||OVERLAY;overlay1.skin В главном меню на камеры вешай команду WEB В принципе всё |
Вложений: 1
Благодарю! Сейчас попробую осуществить.
Странно - почему-то ни один из вариантов команды для кнопки камер не приводит даже к переключению на требуемый скин: Ни "WEB", ни "LOAD;WBROWSER.skin" не работают...:dntknw: А где находятся скрипты в икаре? Дело в том, что WBROWSER.skin ссылается на Script,OnScreenStart, а папка со скритами есть только в скине CFStyle... |
Архив в предыдущем посте поправил (там ошибка имела место), но вопросы остались те же...
|
В принципе всё сделал не так, но пока такой вопрос, а почему разрешение 1024х756, обычно 1024х768. Случайно не ошибся?
|
Цитата:
|
Цитата:
|
Цитата:
|
Так должен выглядеть WBROWSER.skin
Код:
RoadRunner Skin Это overlay.skin, сразу добавил расположение на экране и прозрачность оверлая Код:
RoadRunner Skin Так как кнопка у тебя круглая, то фон вокруг неё делай розовый, чтобы он был прозрачным Команда на кнопке Камеры вот такая WEB||Activate;!TWebBrowserForm - это тоже я накосячил Пробуй |
Сенкс! Попробую, и по результатам отпишусь.
|
Неа, не пашет...
По menu.skin: Полагаю, что разбежка в размере jpg`ов и реальным разрешение экрана не в счет. Поэтому на это пока забил, но что-то все равно не шьется: Activate, насколько я помню, поднимает из трея уже запущенное приложение. Если в икаре есть свой браузер, может оно и должно работать (хотя с веб-интерфесом регистратора тоже не все так просто: он работает только через IE, да и то с определенными его настройками). Собственно, дальше можно было бы и не писать - перехода на скин WBROWSER так и нет - все кнопки работают, кроме этой... По WBROWSER.skin: overlay_down.jpg сделал просто цветным фоном (там, вроде разницы межу down, on и off быть не должно?). Про скрипты вопрос так и остался открытым - мы откуда их вызываем? OnScreenStart в составе Икара найти не смог... По overlay.skin: Код:
/POSX=900 |
А какая версия программы у тебя стоит?
|
1.0.5.0
|
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
Только программу, скин тебе не нужен |
Натюрлих, Маргарита Павловна! Спасибо - заработало!
Андрей, если будет время и желание - с ProgScriptNew поможешь разобраться? |
Цитата:
|
Этот пост - в закладках уже неделю... Вопросы вот какие: при размерах экрана 1024х768 требуемая область на веб-странице частично находится за пределами окна.
С X Y W H все понятно, а как быть в этом случае с DL DT DR DB? Судя по приведенному там рисунку, они отсчитываются от "рамочки вокруг приложения..." Что это за рамочка, обычно не более нескольких пикселов? По тексту вроде это ни разу ни видимая область, ни рамка браузера в том конкретном случае, ни что-то еще... Да и не очень понятно, реально ли вообще выдрать этот блок на главный скин? Напомню на всякий случай, что чтобы не путаться с урлами, я изначально планировал выдирать этот блок из FF, где именно эта страница будет стартовой, в отличии от IE, где стартовой должна была быть страница веб-интерфейса регистратора. Последнее, впрочем, не понадобилось... Словом, непонятно как быть с невлезанием требуемого блока на исходную страницу, возможностью вывода его именно на фронт в качестве индикатора что-ли, да и обновлять инфу его тоже пока не очень понятно как. |
Цитата:
|
Цитата:
|
Не, не, не - все гораздо проще: я же приводил планируемый вид здесь. Блок, который надо выдрать отсюда (прогноз погоды на 10 дней) имеет размер меньше, чем разрешение монитора (664х304). Просто он на странице расположен так, что для того, чтобы он полностью отобразился, необходима прокрутка окна.
Т.е. X Y W H - 334 212 664 304... |
Запусти FF с нужной станицей, из командной строки без икара запусти скрипт с такими параметрами, а дальше меняя параметр 630, подбери что бы попадала нужная часть, только не забывай перед новым запуском скрипта, закрывать в трее старый.
ProgScriptNew.exe Intellicast 0 0 660 290 20 630 600 800 правда у меня получилась область 660х290, а не как твоя 664х304 |
Спасибо, попробую поиграться завтра, о результатах отпишусь.
|
Да, таки заработало! Спасибо! Осталось только подогнать положение блока на странице.
А какую команду надо прописать на кнопке, чтобы обновлять эту страницу? Если на кнопку "Погода" повесить запуск скрипта, то несколько нажатий на нее расплодит количество одновременно запущенных скриптов, что не есть хорошо. Значит, это должен быть какой-то SendKey, а запуск скрипта должен осуществляться один раз при старте системы? И надо ли отводить в скине специальную область под этот блок (типа "А" или еще чего-то), или скрипт влепит его поверх всего и без этого? |
Помоему эта старица обновляется сама автоматически, мне так показалось
Про запуск позже расскажу, из машины неудобно А в скине в нужном месте вырежи область в скине, тег C |
Я вот чего подумал - видимо, скрипт имеет смысл запускать каждый раз, когда загружается menu.skin, и выгружать, когда идет переход на любой другой скин. Тогда и обновление инфы будет само собой происходить, и блок этот не будет путаться под ногами в других скинах. Хотя судя по последнему абзацу твоего поста, он поверх всех окон выводиться не будет и так...
P.S. Ну ты и маньяк - аж из машины форум не только мониторишь, но еще и отвечать умудряешься... Или у тебя личный водитель? ;) |
Значит так
В ExecTBL делай такую команду "OnSkinStart","Run;путь к FireFoxe||Run;Путь к скрипту|параметры скрипта" А в файле menu.skin Script,OnScreenStart,Activate;Intellicast Всё. Если я ошибаюсь и станица сама не обновляется, то потом расскажу как сделать чтобы обновлялась, заодно узнаешь что такое таймеры в икаре |
Часовой пояс GMT +4, время: 08:20. |
Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot