PCCar.ru - Ваш автомобильный компьютер

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   iCarDS (http://pccar.ru/forumdisplay.php?f=121)
-   -   Кастомизация iCarDS (http://pccar.ru/showthread.php?t=14713)

Pinin 31.03.2011 11:17

Кастомизация 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
Ищем main.png - находим main_off.png и main_down.png. Понимаем, что знак "равно" в цитате - не совсем "равно", но лишний раз подтверждаем теорию о том, что все тут блочно и по вызову... И не страдает интуитивностью...

В общем, с задачей перерисовать интерфейс фронта в минималистическом стиле - пяток пользовательских кнопок по нижней части экрана (из которых две - настройка и закрытие фронта) плюс пара окон под флеш и встроенное с помощью ProgScriptNew.exe окно внешнего приложения, я позорно не справился... :blush:

Буду признателен за любую (пусть даже теоретическую) помощь в этом вопросе.

Bersenev 31.03.2011 11:42

Давай по порядку, ты говоришь что хочешь обрезать, а я отвечаю как это сделать.

Допустим - нужно чтобы главное меню выглядело так (скриншот). А я подскажу, что и где лежит, и куда это надо вставить.

RRSkinEditor прекрасно с этим справляется, только при соблюдении определённых правил

Pinin 31.03.2011 12:03

Вложений: 1
Ок! В аттаче вчерне набросанный скелет главного меню: нижний ряд - кнопки (B1-B3 пользовательские, B4, B22 - настройка и закрытие фронта), одно окно под флеш, одно - под индикаторы, одно под приложение, встраиваемое скриптом.

Bersenev 31.03.2011 12:19

Цитата:

Сообщение от Pinin (Сообщение 179154)
Ок! В аттаче вчерне набросанный скелет главного меню: нижний ряд - кнопки (B1-B3 пользовательские, B4, B22 - настройка и закрытие фронта), одно окно под флеш, одно - под индикаторы, одно под приложение, встраиваемое скриптом.

Это будет экран главного меню?

А лучше опиши для начала, какой функционал будешь делать и какие экраны будут нужны, просто у меня создаётся ощущение, что легче будет сделать с нуля, чем обрезать CFStyle

Pinin 31.03.2011 14:46

Хм, дареное в прок не идет - эдак я ничему не научусь... С другой стороны, было бы наглостью проситься в подмастерья.

Хорошо. Озвучиваю ТЗ: на компе будет завязана система "умного дома". Скелет приведен действительно для главного меню скина. Пока реально работает лишь система подъездного видеонаблюдения и GSM сигнализация квартиры. Последняя по СОМ-порту заливается рабочими конфигурациями (тревожные телефоны, голосовые сообщения, логика срабатывания датчиков и т.п. вещи) - т.е. одна из пользовательских кнопок будет вызывать ее сервисную прогу. Полагаю, со встраиванием ее особых проблем не будет - там хитростей никаких вроде нет. Название перехватываемого окна сейчас сказать не могу, посмотрю вечером.

Второй экран - веб интерфейс видеорегистратора на 4 камеры. Ввиду того, что на 9 дюймовом экране даже с одной камеры картинка не слишком большая (а штатно выводится блок из 4 превьюшек + панель управления) - браузер будет настроен на стартовую страницу ВИ по умолчанию и открываться должен без обрамления вообще, в полный экран. При этом кнопки закрытия приложения и перехода в главное меню скина все же нужны (в overlay-варианте).

Третий экран - на перспективу под Ардуино. Сигналка сама имеет некоторое количество входов/выходов и мозги, чтобы отрабатывать прошитые алгоритмы (т.е. может сообщить звонком об утечке воды или газа, о текущей температуре, зажигать свет, включать кондей и т.п.) В связке же с Арду можно нагородить еще больше, и благо некоторый опыт в этом есть - этот экран будет использоваться для вызова проги (пока еще не написанной) для управления Ардуиной.

На экране же главного меню (помимо кнопок) планируется флеш с часами и календарем, вывод параметров системы (температура, загрузка проца и т.п.) и (не знаю, правда, насколько это осуществимо) - вывод блока прогноза погоды на 10 дней отсюда.
Пока, чтобы не путаться с вводом адресов, это внутреннее противоречие планировалось разрулить за счет применения в системе двух разных браузеров с разными стартовыми страницами (IE для видеонаблюдения и FF для погоды). Хотя, не уверен, что ProgScriptNew.exe сможет справиться с такой задачей - отобразить в окне главного меню вырезанный с интернет-страницы графический блок...

Вот вкратце как-то так.

Bersenev 31.03.2011 15:14

Как я и подозревал, из-за пяти, максимум десяти экранов не стоит перелопачивать почти 500 экранов CFStyle.

Значит так.

1. Рисуешь экран главного меню, расставляешь там всё как тебе нужно, это ты умеешь, если планируешь что флеш с часами и календарём должен меняться, то сразу задаёшь в skin.ini переменную main_flash=clock.swf , а в параметре флеша пишешь "$skinpath$Flash\$main_flash$". Тогда потом можно будет сделать выбор нужной флешки из папки Flash, находящийся в папке скина. Погоду тоже вывести можно, но об этом позже.

2. По поводу видеорегистратора, тоже осуществимо, но при условии встраивания внешнего браузера, можно IE, но удобнее будет с Firefox, встраивать придётся через скрипт ProgScriptNew. Хотя можно попробовать и с внутренним брайзером, без скрипта, так как тебе нужен именно весь экран, а не его часть.

3. А с программой GSM сигнализации проблем вообще не вижу.

В общем всё можно сделать с нуля за пару дней. Если захочешь делать какие то настройки (цвета кнопок, выбор фона, выбор флешки и т.д), то можно будет просто взять куски из CFStyle и всё.

Так что лучше начинай с нуля, быстрее будет.

Pinin 31.03.2011 15:54

Т.е. сейчас фактически я рисую скин для икара (независимый от CFStyle), требования к которому не отличаются от требований к скинам для RR, а потом добиваю его отдельными кусками от твоего (окно браузера и т.п.)?

При разрешении монитора 1024х756 размеры графики скина такие же, или сразу делать 1024х600 (почему, кстати, для CFStyle выбран такой размер?)?

Bersenev 31.03.2011 16:03

Цитата:

Сообщение от Pinin (Сообщение 179196)
Т.е. сейчас фактически я рисую скин для икара (независимый от CFStyle), требования к которому не отличаются от требований к скинам для RR, а потом добиваю его отдельными кусками от твоего (окно браузера и т.п.)?

Да

Цитата:

Сообщение от Pinin (Сообщение 179196)
При разрешении монитора 1024х756 размеры графики скина такие же, или сразу делать 1024х600 (почему, кстати, для CFStyle выбран такой размер?)?

Рисуешь картинки размером 1024х756 и на их основе делаешь скин.

В CFStyle такой размер потому что у меня в машине стоят EEE901 и EEE900, а у них мониторы 1024х600 так и рисовал. Как потом оказалось это наиболее оптимальное разрешение, для скина который должен работать в пяти разрешениях.

Pinin 31.03.2011 16:22

Понял, благодарю!

Pinin 03.04.2011 13:20

Вложений: 2
Ну, в общем набросал костяк - проект скина в аттаче, функционал описан выше, внешний вид планируется примерно как на картинке.
Пока непонятка, как организовать браузер (вкладка "Камеры") и захват окна с Интелликаста...

odessit 03.04.2011 14:17

Классс!!! Очень красиво!!!

Pinin 03.04.2011 14:51

2 odessit

Сенкс! Теперь бы еще функционалом наполнить...

Bersenev 03.04.2011 14:57

Цитата:

Сообщение от Pinin (Сообщение 179494)
Ну, в общем набросал костяк - проект скина в аттаче, функционал описан выше, внешний вид планируется примерно как на картинке.
Пока непонятка, как организовать браузер (вкладка "Камеры") и захват окна с Интелликаста...

Давай по порядку. Начнем допустим с камер. Давай скриншот браузера как работает сейчас, и что хочешь получить в результате, а я скажу как это получить

Pinin 03.04.2011 15:32

Вложений: 1
Ок! На эскизе - внешний вид интерфейса регистратора. Надо его вписать в 1024х756 без обрамления (т.е. все панели самого браузера не нужны). А вот оверлеевские кнопки закрытия приложения и возврата в скин меню (можно, кстати, эти функции совместить в одной единственной кнопке) были бы весьма желательны...

Да, нативные размеры окна - 1056х673, но если низ картинки будет обрезан - не страшно: двойным кликом по камере ее картинка разворачивается на весь экран, и так же сворачивается, так что париться с этим параметром смысла особого нет.

Bersenev 03.04.2011 16:00

Цитата:

Сообщение от Pinin (Сообщение 179505)
Ок! На эскизе - внешний вид интерфейса регистратора. Надо его вписать в 1024х756 без обрамления (т.е. все панели самого браузера не нужны). А вот оверлеевские кнопки закрытия приложения и возврата в скин меню (можно, кстати, эти функции совместить в одной единственной кнопке) были бы весьма желательны...

Да, нативные размеры окна - 1056х673, но если низ картинки будет обрезан - не страшно: двойным кликом по камере ее картинка разворачивается на весь экран, и так же сворачивается, так что париться с этим параметром смысла особого нет.

Если хочешь использовать именно полный экран для браузера с оверлайной кнопкой, то рисуй картинку кнопки размером 100х100 , или какой тебе по душе, на её основе делай экран overlay1.skin, в котором задай одну кнопку с командой, CloseOverlay||Main

И WBROWSER.SKIN в нем задай область

A,0,0,1024,768,

и такую строчку

Script,OnScreenStart,WEBURL;адрес_твоего_регистратора||OVERLAY;overlay1.skin

В главном меню на камеры вешай команду WEB

В принципе всё

Pinin 03.04.2011 16:09

Вложений: 1
Благодарю! Сейчас попробую осуществить.

Странно - почему-то ни один из вариантов команды для кнопки камер не приводит даже к переключению на требуемый скин: Ни "WEB", ни "LOAD;WBROWSER.skin" не работают...:dntknw:

А где находятся скрипты в икаре? Дело в том, что WBROWSER.skin ссылается на Script,OnScreenStart, а папка со скритами есть только в скине CFStyle...

Pinin 03.04.2011 18:34

Архив в предыдущем посте поправил (там ошибка имела место), но вопросы остались те же...

Bersenev 03.04.2011 19:01

В принципе всё сделал не так, но пока такой вопрос, а почему разрешение 1024х756, обычно 1024х768. Случайно не ошибся?

Pinin 03.04.2011 19:04

Цитата:

В принципе всё сделал не так
Фига се... Это вселяет... Да, с разрешением ошибка вышла, но с остальным-то что не так?

Bersenev 03.04.2011 19:09

Цитата:

Сообщение от Pinin (Сообщение 179533)
Фига се... Это вселяет... Да, с разрешением ошибка вышла, но с остальным-то что не так?

Сейчас немного поколдую, и расскажу что надо сделать. Но именно расскажу, а не дам результат, так лучше запоминается

Pinin 03.04.2011 19:18

Цитата:

Но именно расскажу, а не дам результат
Ну дак и я с самого начала об этом ;)

Bersenev 03.04.2011 19:25

Так должен выглядеть WBROWSER.skin

Код:

RoadRunner Skin
ROADRUNNER WBROWSER Skin
overlay_down.jpg,overlay_down.jpg,overlay_down.jpg,overlay_down.jpg
 
Script,OnScreenStart,WEBURL;http://www.pccar.ru||OVERLAY;overlay.skin
/
C,0,0,1024,756
A,0,0,1024,756,

END

Область C обязательна, это мой косяк

Это overlay.skin, сразу добавил расположение на экране и прозрачность оверлая

Код:

RoadRunner Skin
ROADRUNNER overlay Skin
button.png,button.png,button.png,button.png
 
/POSX=900
/POSY=600
V,25
B7,0,0,123,127,"CloseOverlay||Main",""

END

Картинка для этого скина должна быть размером с кнопку как я и писал 100х100 или нужная тебе, это твой косяк.
Так как кнопка у тебя круглая, то фон вокруг неё делай розовый, чтобы он был прозрачным

Команда на кнопке Камеры вот такая WEB||Activate;!TWebBrowserForm - это тоже я накосячил

Пробуй

Pinin 03.04.2011 19:30

Сенкс! Попробую, и по результатам отпишусь.

Pinin 03.04.2011 20:48

Неа, не пашет...

По menu.skin:
Полагаю, что разбежка в размере jpg`ов и реальным разрешение экрана не в счет. Поэтому на это пока забил, но что-то все равно не шьется: Activate, насколько я помню, поднимает из трея уже запущенное приложение. Если в икаре есть свой браузер, может оно и должно работать (хотя с веб-интерфесом регистратора тоже не все так просто: он работает только через IE, да и то с определенными его настройками). Собственно, дальше можно было бы и не писать - перехода на скин WBROWSER так и нет - все кнопки работают, кроме этой...

По WBROWSER.skin:
overlay_down.jpg сделал просто цветным фоном (там, вроде разницы межу down, on и off быть не должно?).
Про скрипты вопрос так и остался открытым - мы откуда их вызываем? OnScreenStart в составе Икара найти не смог...

По overlay.skin:
Код:

/POSX=900
/POSY=600

- закомментчены из каких соображений? Это, видимо, положение кнопки выхода из скина, но снятие комментария тоже ничего не изменило...

Bersenev 03.04.2011 20:54

А какая версия программы у тебя стоит?

Pinin 03.04.2011 21:00

1.0.5.0

Bersenev 03.04.2011 21:13

Цитата:

Сообщение от Pinin (Сообщение 179559)
Неа, не пашет...

А у меня пашет

Цитата:

Сообщение от Pinin (Сообщение 179559)
По menu.skin:
Activate, насколько я помню, поднимает из трея уже запущенное приложение. Если в икаре есть свой браузер, может оно и должно работать (хотя с веб-интерфесом регистратора тоже не все так просто: он работает только через IE, да и то с определенными его настройками). Собственно, дальше можно было бы и не писать - перехода на скин WBROWSER так и нет - все кнопки работают, кроме этой...

Икар и работает с IE. Activate ищит окно по имени и делает его активным, в данном случае по классу окна, у IE запущенного из под икара такой класс окна.

Цитата:

Сообщение от Pinin (Сообщение 179559)
По WBROWSER.skin:
overlay_down.jpg сделал просто цветным фоном (там, вроде разницы межу down, on и off быть не должно?). Про скрипты вопрос так и остался открытым - мы откуда их вызываем?
OnScreenStart в составе Икара найти не смог...

Тег Script внутри файла skin, позволяет описывать команды внутри этого файла, а не в ExecTBL, а Script OnScreenStart выполняется автоматически при открытии экрана WBROWSER.skin. То есть при вызове команды WEB откроется скин WBROWSER.skin и выполняться команды WEBURL;****||OVERLAY;overlay.skin

Цитата:

Сообщение от Pinin (Сообщение 179559)
По overlay.skin:

/POSX=900
/POSY=600

- закомментчены из каких соображений? Это, видимо, положение кнопки выхода из скина, но снятие комментария тоже ничего не изменило...

Это не комментарии , это именно такие команды, в РР кстати также

Bersenev 03.04.2011 21:14

Цитата:

Сообщение от Pinin (Сообщение 179564)
1.0.5.0

Скачай 1.0.5.37 из второго поста:spiteful:

Только программу, скин тебе не нужен

Pinin 03.04.2011 21:37

Натюрлих, Маргарита Павловна! Спасибо - заработало!

Андрей, если будет время и желание - с ProgScriptNew поможешь разобраться?

Bersenev 03.04.2011 21:40

Цитата:

Сообщение от Pinin (Сообщение 179572)
Андрей, если будет время и желание - с ProgScriptNew поможешь разобраться?

Какие проблемы, спрашивай, только для начала здесь почитай http://www.pccar.ru/showpost.php?p=170032&postcount=8

Pinin 03.04.2011 22:18

Этот пост - в закладках уже неделю... Вопросы вот какие: при размерах экрана 1024х768 требуемая область на веб-странице частично находится за пределами окна.

С X Y W H все понятно, а как быть в этом случае с DL DT DR DB? Судя по приведенному там рисунку, они отсчитываются от "рамочки вокруг приложения..."
Что это за рамочка, обычно не более нескольких пикселов? По тексту вроде это ни разу ни видимая область, ни рамка браузера в том конкретном случае, ни что-то еще...

Да и не очень понятно, реально ли вообще выдрать этот блок на главный скин? Напомню на всякий случай, что чтобы не путаться с урлами, я изначально планировал выдирать этот блок из FF, где именно эта страница будет стартовой, в отличии от IE, где стартовой должна была быть страница веб-интерфейса регистратора. Последнее, впрочем, не понадобилось...

Словом, непонятно как быть с невлезанием требуемого блока на исходную страницу, возможностью вывода его именно на фронт в качестве индикатора что-ли, да и обновлять инфу его тоже пока не очень понятно как.

Bersenev 03.04.2011 22:29

Цитата:

Сообщение от Pinin (Сообщение 179581)
Этот пост - в закладках уже неделю... Вопросы вот какие: при размерах экрана 1024х768 требуемая область на веб-странице частично находится за пределами окна.

С X Y W H все понятно, а как быть в этом случае с DL DT DR DB? Судя по приведенному там рисунку, они отсчитываются от "рамочки вокруг приложения..."
Что это за рамочка, обычно не более нескольких пикселов? По тексту вроде это ни разу ни видимая область, ни рамка браузера в том конкретном случае, ни что-то еще...

Да и не очень понятно, реально ли вообще выдрать этот блок на главный скин? Напомню на всякий случай, что чтобы не путаться с урлами, я изначально планировал выдирать этот блок из FF, где именно эта страница будет стартовой, в отличии от IE, где стартовой должна была быть страница веб-интерфейса регистратора. Последнее, впрочем, не понадобилось...

Словом, непонятно как быть с невлезанием требуемого блока на исходную страницу, возможностью вывода его именно на фронт в качестве индикатора что-ли, да и обновлять инфу его тоже пока не очень понятно как.

Ничего не понял, но и не надо. Лучше скажи, что конкретно и на каком экране хочешь увидеть

= Nicki = 03.04.2011 22:31

Цитата:

Сообщение от Pinin (Сообщение 179581)
Словом, непонятно как быть с невлезанием требуемого блока на исходную страницу, возможностью вывода его именно на фронт в качестве индикатора что-ли, да и обновлять инфу его тоже пока не очень понятно как.

т.е. я правильно понял ты хочешь впихнуть окно скажем (размер условный для понимания) 1200х800 в экран с физическим разрешением 1024х768? Если так то скрипт не умеет маштабировать он тока обрезает лишнее. Может тогда стоит поиграть с маштабом в FF? Либо часть экрана тупо не в лезет

Pinin 03.04.2011 22:38

Не, не, не - все гораздо проще: я же приводил планируемый вид здесь. Блок, который надо выдрать отсюда (прогноз погоды на 10 дней) имеет размер меньше, чем разрешение монитора (664х304). Просто он на странице расположен так, что для того, чтобы он полностью отобразился, необходима прокрутка окна.

Т.е. X Y W H - 334 212 664 304...

Bersenev 03.04.2011 22:53

Запусти FF с нужной станицей, из командной строки без икара запусти скрипт с такими параметрами, а дальше меняя параметр 630, подбери что бы попадала нужная часть, только не забывай перед новым запуском скрипта, закрывать в трее старый.

ProgScriptNew.exe Intellicast 0 0 660 290 20 630 600 800

правда у меня получилась область 660х290, а не как твоя 664х304

Pinin 03.04.2011 23:12

Спасибо, попробую поиграться завтра, о результатах отпишусь.

Pinin 04.04.2011 08:53

Да, таки заработало! Спасибо! Осталось только подогнать положение блока на странице.

А какую команду надо прописать на кнопке, чтобы обновлять эту страницу? Если на кнопку "Погода" повесить запуск скрипта, то несколько нажатий на нее расплодит количество одновременно запущенных скриптов, что не есть хорошо. Значит, это должен быть какой-то SendKey, а запуск скрипта должен осуществляться один раз при старте системы?
И надо ли отводить в скине специальную область под этот блок (типа "А" или еще чего-то), или скрипт влепит его поверх всего и без этого?

Bersenev 04.04.2011 09:20

Помоему эта старица обновляется сама автоматически, мне так показалось

Про запуск позже расскажу, из машины неудобно

А в скине в нужном месте вырежи область в скине, тег C

Pinin 04.04.2011 10:01

Я вот чего подумал - видимо, скрипт имеет смысл запускать каждый раз, когда загружается menu.skin, и выгружать, когда идет переход на любой другой скин. Тогда и обновление инфы будет само собой происходить, и блок этот не будет путаться под ногами в других скинах. Хотя судя по последнему абзацу твоего поста, он поверх всех окон выводиться не будет и так...

P.S. Ну ты и маньяк - аж из машины форум не только мониторишь, но еще и отвечать умудряешься... Или у тебя личный водитель? ;)

Bersenev 04.04.2011 10:36

Значит так

В 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