Вернуться   DreamBox Satellite Forum > Обсуждение > Dreambox DM 5xxx/7xxx/8xxx/9xxx > Developer board

Developer board Раздел для разработчиков софта

Ответ
 
Опции темы

Старый 22.05.2010, 10:21   #1
ФАКер
 
Аватар для lagush
 
lagush вне форума
Регистрация: 24.05.2006
Сообщений: 6,765
Отправить сообщение для lagush с помощью ICQ
По умолчанию

Очень часто спрашивают, а нельзя ли сделать так или этак. Или "а в энигма1 было так..."
Попробуем создать тему по тюнингу энигма2.
.
__________________
DM7020HD (2xDVB-S2), Merlin3+GP3 (OE1.6), HDD 2.5" 320 GB HM320JI, Wi-Fi
DM500S, Gemini 4.7, mgcamd 1.31
90cm(19E-13E-Twin9E-5E-4W)+80cm(Twin 36Е)+65cm(36E)

Последний раз редактировалось lagush; 07.07.2010 в 20:19.
  Ответить с цитированием

Старый 22.05.2010, 10:21   #2
ФАКер
 
Аватар для lagush
 
lagush вне форума
Регистрация: 24.05.2006
Сообщений: 6,765
Отправить сообщение для lagush с помощью ICQ
По умолчанию

Прежде всего, чем браться за редактирование python-скриптов, а именно это и подразумевает эта тема, надо знать некоторые нюансы, так сказать, минимум для начинающих...
1. Вооружитесь ХОРОШИМ и УДОБНЫМ текстовым редактором, который:
1) понимает линукс-кодировку переноса строк;
2) понимает, что знак табуляции [клавиша Tab] это знак табуляции, а не череда пробелов;
3) желательно, чтоб имел визуальную индикацию отступов от начала строки;
4) желательно, чтоб имел подсветку синтаксиса языка Python.
2. Отступы от начала строки в языке Python это основополагающая вещь. Это своего рода логические скобки BEGIN и END.
3. Отступы выполняются только клавишей Tab. Но возможно выполнять отступы и пробелами, в таком случае весь скрипт должен содержать отступы из пробелов.
4. Комбинации отступов из табуляторов и пробелов в одном файле КАТЕГОРИЧЕСКИ ЗАПРЕЩЕНЫ.
5. В редактируемых вами скриптах не должно быть ничего, кроме английского. Никаких русских слов, пусть даже и закомментированных.

Вот ссылка на неплохой текстовый редактор
http://notepad-plus-plus.org/

vlamo
__________________
DM7020HD (2xDVB-S2), Merlin3+GP3 (OE1.6), HDD 2.5" 320 GB HM320JI, Wi-Fi
DM500S, Gemini 4.7, mgcamd 1.31
90cm(19E-13E-Twin9E-5E-4W)+80cm(Twin 36Е)+65cm(36E)

Последний раз редактировалось lagush; 22.05.2012 в 09:20.
  Ответить с цитированием

Старый 03.07.2010, 15:12   #3
ФАКер
 
Аватар для lagush
 
lagush вне форума
Регистрация: 24.05.2006
Сообщений: 6,765
Отправить сообщение для lagush с помощью ICQ
По умолчанию

Всем любителям дрима 500 посвящается...
Вариант изменения раскладки пульта ДУ, как было в любимом дриме 500.
Автор vlamo

1. Изменяем предназначение кнопки INFO...
* Нажатие INFO при неактивном инфобаре выводит его на экран
* Нажатие INFO при активном инфобаре закрывает его и выводит окно с
описанием EPG если есть, иначе выводит список букетов для выбора MultiEPG
* В окне с описанием EPG можно пролистать все доступные в EPG события
для текущего канала (описания событий подгружаются динамически по
мере их надобности, это позволяет на слабеньких dm800 сократить
время первоначальной загрузки окна на экран, но возможно будет
подтормаживать во время вывода описания след./пред. события, в таком
случае разработчики не ошиблись и два события это то, что вам нужно)
* Третие нажатие INFO закрывает все окна.
* Ну и долгое нажатие (~2 сек.) кнопки INFO, как и раньше, выводит список
выбора EPG.

2. Переназначаем кнопки LEFT, RIGHT, UP, DOWN и OK...
* Кнопка ОК открывает список сервисов на текущем канале
* Кнопка UP переключает на предыдущий канал в списке
* Кнопка DOWN переключает на следующий канал в списке
* Кнопки LEFT RIGHT регулируют громкость
(аналог действия плагина Pauli, который менял все, кроме назначения кнопок громкости)

Архив с необходимыми файлами в прицепке. Читаем readme.

Наконец, я имею сразу нормальный ЕПГ не на два события вперед, а на все доступные события!
Т.е. раньше был по нажатии ИНФО "короткий" ЕПГ на два события:



Теперь выводится "нормальный" ЕПГ на все доступные события:



Если кому не нравится двойное назначение кнопки INFO (т.е. не хочется два раза на нее жать для вызова ЕПГ), то можно просто заменить класс InfoBarEPG в /usr/lib/enigma2/python/Screens/InfoBarGenerics.py
В этом случае, раскладку пульта, т.е. файл /usr/share/enigma2/keymap.xml менять не надо.

Теперь у меня пульт работает абсолютно так же, как и в дриме 500.
Я еще поменял местами кнопки EXIT и VIDEO для полного "тактильного" сходства.
Вложения
Тип файла: zip keymap_500.zip (26.2 Кб, 668 просмотров)
__________________
DM7020HD (2xDVB-S2), Merlin3+GP3 (OE1.6), HDD 2.5" 320 GB HM320JI, Wi-Fi
DM500S, Gemini 4.7, mgcamd 1.31
90cm(19E-13E-Twin9E-5E-4W)+80cm(Twin 36Е)+65cm(36E)
  Ответить с цитированием

Старый 04.07.2010, 10:27   #4
ФАКер
 
Аватар для lagush
 
lagush вне форума
Регистрация: 24.05.2006
Сообщений: 6,765
Отправить сообщение для lagush с помощью ICQ
По умолчанию

Продолжаем.

Внимание!!! Теперь окно выбора букетов можно запретить в настройках имиджа. Наконец эту функцию добавили в официальный имидж.

Многие знают про замечательный плагин GraphMultiEPG. Он выводит расписание передач (ЕПГ) для нескольких каналов вниз от текущего в виде удобной сетки. Т.е. можно сразу посмотреть что будут транслировать в ближайшее время по нескольким каналам. Лично я пользуюсь GraphMultiEPG еще со времен дрима 500.
Плагин у меня вызывается нажатием на зеленую кнопку, но есть одна неприятность. Перед тем как вывести сетку, плагин выводит окно выбора букета - приходится нажимать лишние кнопки.
В прицепке лежит инструкция как запретить вывод окна выбора букетов для MultiEPG и для плагина GraphMultiEPG.
Теперь при вызове плагина он открывается сразу на текущем букете и на текущем канале.
Также, данная манипуляция позволяет выводить MultiEPG не только для букетов,
но и для других списков - All, Satellites, Providers, etc.

Автор vlamo
Вложения
Тип файла: txt DisableBouquetSelectorOnMultiEPG.txt (7.3 Кб, 202 просмотров)
__________________
DM7020HD (2xDVB-S2), Merlin3+GP3 (OE1.6), HDD 2.5" 320 GB HM320JI, Wi-Fi
DM500S, Gemini 4.7, mgcamd 1.31
90cm(19E-13E-Twin9E-5E-4W)+80cm(Twin 36Е)+65cm(36E)

Последний раз редактировалось lagush; 22.05.2012 в 09:25.
  Ответить с цитированием

Тюнинг Enigma2
Старый 07.07.2010, 19:52   #5
ФАКер
 
Аватар для lagush
 
lagush вне форума
Регистрация: 24.05.2006
Сообщений: 6,765
Отправить сообщение для lagush с помощью ICQ
По умолчанию Тюнинг Enigma2

....
__________________
DM7020HD (2xDVB-S2), Merlin3+GP3 (OE1.6), HDD 2.5" 320 GB HM320JI, Wi-Fi
DM500S, Gemini 4.7, mgcamd 1.31
90cm(19E-13E-Twin9E-5E-4W)+80cm(Twin 36Е)+65cm(36E)

Последний раз редактировалось lagush; 07.07.2010 в 20:16.
  Ответить с цитированием

Старый 07.07.2010, 20:10   #6
ФАКер
 
Аватар для lagush
 
lagush вне форума
Регистрация: 24.05.2006
Сообщений: 6,765
Отправить сообщение для lagush с помощью ICQ
По умолчанию

Вот и первый вопрос от нашего юзера privetik7:
Скажите может кому удалось уже сделать отображение в Dreambox800HD как в Dreambox500s
- цифровое отображение количества каналов в пакетах после их названия.



Ответ.
Добавляем отображение количества сервисов в папках Services и New в списке каналов для enigma2.

Выполняем инструкции из текствого файла, приложенного к этому посту.
Вот результат:



Автор vlamo
Вложения
Тип файла: zip ChannelSelection.GetServicesCount.zip (1.5 Кб, 393 просмотров)
__________________
DM7020HD (2xDVB-S2), Merlin3+GP3 (OE1.6), HDD 2.5" 320 GB HM320JI, Wi-Fi
DM500S, Gemini 4.7, mgcamd 1.31
90cm(19E-13E-Twin9E-5E-4W)+80cm(Twin 36Е)+65cm(36E)

Последний раз редактировалось vlamo; 01.11.2010 в 11:36.
  Ответить с цитированием

Старый 11.07.2010, 12:51   #7
ФАКер
 
Аватар для lagush
 
lagush вне форума
Регистрация: 24.05.2006
Сообщений: 6,765
Отправить сообщение для lagush с помощью ICQ
По умолчанию

HistoryZapSelector или "Назад в будущее"...
(версия логики по lagush)

Попытаемся сделать окно с выбором недавно просматриваемых сервисов. Окно вызывается по нажатию кнопок пульта ДУ < или >
Для чего это нужно? Например, мы смотрим несколько каналы с различных букетов и надо часто их переключать.
Шпионская функция - придя с работы, можно глянуть какие каналы смотрел ребенок
Логика работы окна:
1. При любом переключении канал добавляется на первое место (вверх) списка;
2. Выбор канала в списке перемещает его на первое место (вверх) списка;
3. Любые повторения записей в списке жестко удаляются;
4. Если кол-во записей в списке превысило допустимое значение, то удаляется самая древняя запись, т.е. последняя;
5. Окно вызывается по нажатию кнопок < или > .
При нажатии > (условно ВПЕРЕД) открывается окно History Zap при этом курсор находится на верхней/текущей позиции (т.к. вперед идти некуда)



При нажатии < (условно НАЗАД) открывается окно History Zap при этом курсор находится на позиции предыдущего канала.



Действия кнопок внутри окна History Zap:
- нажатие "<" (или кнопка курсора пульта ВНИЗ) перемещает курсор вниз по списку (вниз по истории от более свежего канала к более старому)
- нажатие ">" (или кнопка пульта ВВЕРХ) перемещает курсор вверх по списку (вверх по истории от более старого канала к более новому)
- кнопки "0" или ОК - переключить на текущий канал
- кнопки пульта ВЛЕВО/ВПРАВО - переместить курсор в начало/конец списка
- список закольцован. Т.е. стоя на нижнем канале, при нажатии конпки ВНИЗ попадаем на верхний канал и наоборот
- работа HistoryZapSelector не нарушает стандартную функцию кнопки "0" - переключение на предыдущий канал

Вот краткая инструкция по реализации окна HistoryZapSelector на примере имиджа Gemini 5.0
Предварительно внимательно читаем http://dream.altmaster.net/showpost....68&postcount=2
Перед правкой файлов ОБЯЗАТЕЛЬНО делаем их резервные копии!!! Тогда в случае крэша можно быстро вернуть тюнер к жизни.

Инструкция находится в файле HistoryZapSelector_lagush.txt
Вся история создания HistoryZapSelector находится в файле HistoryZapSelector.txt

Автор кода - vlamo
Вложения
Тип файла: zip HistoryZapSelector.ZIP (7.0 Кб, 180 просмотров)
__________________
DM7020HD (2xDVB-S2), Merlin3+GP3 (OE1.6), HDD 2.5" 320 GB HM320JI, Wi-Fi
DM500S, Gemini 4.7, mgcamd 1.31
90cm(19E-13E-Twin9E-5E-4W)+80cm(Twin 36Е)+65cm(36E)

Последний раз редактировалось vlamo; 01.11.2010 в 11:37.
  Ответить с цитированием

Старый 11.07.2010, 15:45   #8
Специалист
 
Аватар для vlamo
 
vlamo вне форума
Регистрация: 01.11.2007
Сообщений: 2,321
Отправить сообщение для vlamo с помощью ICQ
По умолчанию

Добавляем в меню списка каналов "Channellist menu" пункт "set as startup service"
для добавления/удаления (set/unset) выбранного канала в автозагрузку




Инструкция в прилагаемом архиве...
Вложения
Тип файла: zip SetAsStartupService.zip (34.7 Кб, 618 просмотров)
__________________
  • DM600PVR: Gemini 4.70, mgcamd_1.35/mpcs_16e, HDD 160GB
  • ET9200: Image: OpenPLi 3.0; oscam 1830; HDD 160GB

Последний раз редактировалось ASFILL®; 21.09.2010 в 17:46.
  Ответить с цитированием

Тюнинг Enigma2
Старый 19.07.2010, 18:26   #9
Специалист
 
Аватар для vlamo
 
vlamo вне форума
Регистрация: 01.11.2007
Сообщений: 2,321
Отправить сообщение для vlamo с помощью ICQ
По умолчанию Тюнинг Enigma2

Simple Satellite Scan

Это такой себе простенький системный плагин для сканирования спутников.


Возможно сканировать как один транспондер, заданый вручную или предустановленый (из файла satellites.xml), так и один или сразу несколько предустановленых спутников. Такая себе помесь Satfinder и ServiceScan.





Установка:
  1. Забросьте ipk-пакет из zip-архива по ФТП в /tmp Дрима.
  2. По Телнету дать команду:
    ipkg install /tmp/enigma2-plugin-systemplugins-simplesatscan_*_mipsel.ipk
  3. Перезагрузить Энигму через меню (Restart GUI).
Сам плагин после установки надо искать в меню Service Searching вашего имиджа:
Menu -> Setup -> Service Searching -> Simple Satellite Scan
Вложения
Тип файла: zip enigma2-plugin-systemplugins-simplesatscan_0.1_mipsel.ipk.zip (7.6 Кб, 218 просмотров)
__________________
  • DM600PVR: Gemini 4.70, mgcamd_1.35/mpcs_16e, HDD 160GB
  • ET9200: Image: OpenPLi 3.0; oscam 1830; HDD 160GB

Последний раз редактировалось ASFILL®; 21.09.2010 в 17:53.
  Ответить с цитированием

Старый 22.08.2010, 23:19   #10
Специалист
 
Аватар для vlamo
 
vlamo вне форума
Регистрация: 01.11.2007
Сообщений: 2,321
Отправить сообщение для vlamo с помощью ICQ
По умолчанию

Возвращаясь к ExtendedDescription...
или можно и то и то?


Как мы знаем, у разных провайдеров спутникового TV используются разные форматы описания события (телепередачи). Например, у НТВ+ или Радуги используются, так называемые, короткие описания (ShortDescription), а у Триколора, в основном, - расширенные (ExtendedDescription).
Благодаря mpetr, решение было найдено (см. здесь). Но, на сколько я понял, лишь частично... Вот, что он сам пишет:
Цитата:
Сообщение от mpetr Посмотреть сообщение
Пробовал пойти дальше, как я уже писал, то есть, сделать так, чтобы видно было либо то (описание), либо другое (расширенное описание) в зависимости от их наличия/отсутствия - так как ленивые сотрудники Триколора часто пропускают описание и дают сразу расширенное - но здесь моих познаний и опыта явно не хватает.
Чтож... вот решение...
  1. Находим и открываем файл /usr/lib/enigma2/python/Components/Converter/EventName.py
  2. Находим в этом файле класс "EventName"
  3. Находим в этом классе функцию "getText", выглядит она вот так (то, что нам нужно выделено красным):
    Код:
    	def getText(self):
    		event = self.source.event
    		if event is None:
    			return ""
    			
    		if self.type == self.NAME:
    			return event.getEventName()
    		elif self.type == self.SHORT_DESCRIPTION:
    			return event.getShortDescription()
    		elif self.type == self.EXTENDED_DESCRIPTION:
    			return event.getExtendedDescription()
    		elif self.type == self.ID:
    			return str(event.getEventId())
  4. Приводим эту функцию к такому виду:
    Код:
    	def getText(self):
    		event = self.source.event
    		if event is None:
    			return ""
    			
    		if self.type == self.NAME:
    			return event.getEventName()
    		elif self.type == self.SHORT_DESCRIPTION:
    			return event.getShortDescription()
    		elif self.type == self.EXTENDED_DESCRIPTION:
    			ret = event.getExtendedDescription()
    			if ret: return ret
    			return event.getShortDescription()
    		elif self.type == self.ID:
    			return str(event.getEventId())
    Немного погодя, рассмотревшись, увидел, что Триколор в основном использует поле ExtendedDescription, как продолжение короткого описания. Поэтому в последнее время я склонен к такому варианту:
    Код:
    	def getText(self):
    		event = self.source.event
    		if event is None:
    			return ""
    			
    		if self.type == self.NAME:
    			return event.getEventName()
    		elif self.type == self.SHORT_DESCRIPTION:
    			return event.getShortDescription()
    		elif self.type == self.EXTENDED_DESCRIPTION:
    			desc = event.getShortDescription()
    			if desc and desc[-1] != '\n' and desc[-1] != ' ':
    				desc += ' '
    			return desc + event.getExtendedDescription()
    		elif self.type == self.ID:
    			return str(event.getEventId())
    Т.е. выводится и короткое описание, если оно есть, и расширенное, а точнее дополнительное.
  5. Теперь в файле текущего скина (файл skin.xml) в нужном месте (секция "ChannelSelection") всё можно оставить как и было по умолчанию (это для тех, кто уже редактировал скин):
    Код:
    <widget source="ServiceEvent" render="Label" position="10,368" zPosition="1" size="540,55" font="Regular;18" foregroundColor="#cccccc" >
    	<convert type="EventName">ExtendedDescription</convert>
    </widget>
  6. Сохраняем изменения в файле(ax) и делаем Restart GUI через меню Дрима.

Теперь в списке каналов можно видеть в положеном месте описание передач и на энтэвэшных каналах, и на триколоровских, и на прочих.
Скриншоты по-позже или, может, ув. lagush приаттачит...
__________________
  • DM600PVR: Gemini 4.70, mgcamd_1.35/mpcs_16e, HDD 160GB
  • ET9200: Image: OpenPLi 3.0; oscam 1830; HDD 160GB

Последний раз редактировалось vlamo; 16.09.2010 в 15:09.
  Ответить с цитированием

Старый 25.08.2010, 13:37   #11
Специалист
 
Аватар для vlamo
 
vlamo вне форума
Регистрация: 01.11.2007
Сообщений: 2,321
Отправить сообщение для vlamo с помощью ICQ
По умолчанию

Отслеживаем переход в Standby режим


Как известно, в первой Энигме была замечательная парочка скриптов:

enigma_enter_standby.sh
enigma_leave_standby.sh

, которые выполнялись при изменении спящего режима (названия скриптов говорят сами за себя). А вот во второй Энигме такого не реализовано. Правда, стоит отметить, что в имиджах от некоторых команд (например, Gemini) это всё же реализовано в той или иной степени. Чтож поправим это...

  1. Находим и открываем файл /usr/lib/enigma2/python/Screens/Standby.py
  2. В начале этого файла идет перечисление модулей и функций, которые нужны для работы. Добавим к ним строку с импортом модуля os:
    Код:
    from Screen import Screen
    from Components.ActionMap import ActionMap
    from Components.config import config
    from Components.AVSwitch import AVSwitch
    from Components.SystemInfo import SystemInfo
    from enigma import eDVBVolumecontrol, Cbputils
    import os
  3. Дальше находим класс "Standby" и функцию в нем - "Power":
    Код:
    	def Power(self):
    		print "leave standby"
    		#set input to encoder
    		self.avswitch.setInput("ENCODER")
    		#restart last played service
    		#unmute adc
    		self.leaveMute()
    		#kill me
    		self.close(True)
  4. Привидем её к такому виду (изменения выделены красным цветом):
    Код:
    	def Power(self):
    		print "leave standby"
    		if os.path.exists("/usr/bin/enigma_leave_standby.sh"):
    			os.system("/usr/bin/enigma_leave_standby.sh")
    			
    		#set input to encoder
    		self.avswitch.setInput("ENCODER")
    		#restart last played service
    		#unmute adc
    		self.leaveMute()
    		#kill me
    		self.close(True)
    Т.е. при выходе из Standby mode (Спящего режима) будем проверять есть ли такой файл - /usr/bin/enigma_leave_standby.sh , и если есть, то попросим систему исполнить его. Думаю не стоит объяснять, что права на файл должны быть установлены - 755.
  5. Ищем в этом же классе "Standby" функцию "__init__", и также, как и в предыдущем пункте, после ключевой строчки "print "enter standby"" добавляем свой код:
    Код:
    	def __init__(self, session):
    		Screen.__init__(self, session)
    		self.avswitch = AVSwitch()
    
    		print "enter standby"
    		if os.path.exists("/usr/bin/enigma_enter_standby.sh"):
    			os.system("/usr/bin/enigma_enter_standby.sh")
    
    		self["actions"] = ActionMap( [ "StandbyActions" ],
    		{
    			"power": self.Power
    		}, -1)
    
    		#mute adc
    		self.setMute()
    
    		self.paused_service = None
    		self.prev_running_service = None
    		if self.session.current_dialog:
    			if self.session.current_dialog.ALLOW_SUSPEND == Screen.SUSPEND_STOPS:
    				#get currently playing service reference
    				self.prev_running_service = self.session.nav.getCurrentlyPlayingServiceReference()
    				#stop actual played dvb-service
    				self.session.nav.stopService()
    			elif self.session.current_dialog.ALLOW_SUSPEND == Screen.SUSPEND_PAUSES:
    				self.paused_service = self.session.current_dialog
    				self.paused_service.pauseService()
    
    		#set input to vcr scart
    		if SystemInfo["ScartSwitch"]:
    			self.avswitch.setInput("SCART")
    		else:
    			self.avswitch.setInput("AUX")
    		self.onFirstExecBegin.append(self.__onFirstExecBegin)
    		self.onClose.append(self.__onClose)
    Здесь мы во время перехода в Standby mode (Спящий режим) будем проверять существует ли файл - /usr/bin/enigma_enter_standby.sh , и если да, то система попробует исполнить его.
  6. Сохраняем изменения в файле и делаем Restart GUI через меню Дрима.

Вот, собственно, и всё. Думаю писать примеры скриптов -

/usr/bin/enigma_enter_standby.sh (права 755)
/usr/bin/enigma_leave_standby.sh (права 755)

не имеет смысла, так-как задачи, которые они могут выполнять весьма разнообразны: кому-то надо просто останавливать и запускать эмуляторы, кому-то для других и более сложных целей...
__________________
  • DM600PVR: Gemini 4.70, mgcamd_1.35/mpcs_16e, HDD 160GB
  • ET9200: Image: OpenPLi 3.0; oscam 1830; HDD 160GB

Последний раз редактировалось vlamo; 25.08.2010 в 15:06.
  Ответить с цитированием

DeleteRecordingAfterStop
Старый 25.08.2010, 14:09   #12
Специалист
 
Аватар для vlamo
 
vlamo вне форума
Регистрация: 01.11.2007
Сообщений: 2,321
Отправить сообщение для vlamo с помощью ICQ
По умолчанию DeleteRecordingAfterStop

Добавляем в меню выбора вариантов останова записи (по красной кнопке) пункт
"stop and delete recording"
для непосредственного и незамедлительного удаления файла записи с диска.


Например, вы начав запись какого-нибудь канала, рассмотревшись вдруг поняли, что текущая запись вас вряд-ли сможет заинтересовать в будущем и вам она просто оказалась не нужна. Зачем же её оставлять на жестком диске?..


Вместе с самим файлом записи *.ts также удаляются и все "сопутствующие" файлы - *.eit *.meta *.cuts и прочие.

Как сделать, смотрите описание в аттаче:
Вложения
Тип файла: txt DeleteRecordingAfterStop.txt (6.4 Кб, 134 просмотров)
__________________
  • DM600PVR: Gemini 4.70, mgcamd_1.35/mpcs_16e, HDD 160GB
  • ET9200: Image: OpenPLi 3.0; oscam 1830; HDD 160GB

Последний раз редактировалось vlamo; 24.09.2010 в 20:18.
  Ответить с цитированием

SingleServiceEPG на кнопку INFO
Старый 22.09.2010, 15:08   #13
Специалист
 
Аватар для vlamo
 
vlamo вне форума
Регистрация: 01.11.2007
Сообщений: 2,321
Отправить сообщение для vlamo с помощью ICQ
По умолчанию SingleServiceEPG на кнопку INFO

Цитата:
Сообщение от gmx Посмотреть сообщение
EPG списком сейчас открывается как-то так: на чистом экране INFO - затем желтая (Dream Elite).
Неплохо, но хочу одной кнопкой. Любой! Можно той же INFO.

Вызываем окно SingleServiceEPG коротким нажатием кнопки INFO


Решение:
  1. Находим и открываем файл /usr/lib/enigma2/python/Screens/InfoBarGenerics.py
  2. Находим в этом файле класс "InfoBarEPG"
  3. Находим в этом классе функцию " __init__", выглядит она вот так:
    (Внимание!!! Функция может несколько отличаться от той, что у вас. Но... Но то, что нам надо выделено красным)
    Код:
    class InfoBarEPG:
    	""" EPG - Opens an EPG list when the showEPGList action fires """
    	def __init__(self):
    		self.__event_tracker = ServiceEventTracker(screen=self, eventmap=
    			{
    				iPlayableService.evUpdatedEventInfo: self.__evEventInfoChanged,
    			})
    
    		self.is_now_next = False
    		self.dlg_stack = [ ]
    		self.bouquetSel = None
    		self.eventView = None
    		self["EPGActions"] = HelpableActionMap(self, "InfobarEPGActions",
    			{
    				"showEventInfo": (self.openEventView, _("show EPG...")),
    				"showEventInfoPlugin": (self.showEventInfoPlugins, _("list of EPG views...")),
    				"showInfobarOrEpgWhenInfobarAlreadyVisible": self.showEventInfoWhenNotVisible,
    			})
  4. Приводим эту функцию к такому виду, т.е. добавим только одну строчку:
    Код:
    class InfoBarEPG:
    	""" EPG - Opens an EPG list when the showEPGList action fires """
    	def __init__(self):
    		self.__event_tracker = ServiceEventTracker(screen=self, eventmap=
    			{
    				iPlayableService.evUpdatedEventInfo: self.__evEventInfoChanged,
    			})
    
    		self.is_now_next = False
    		self.dlg_stack = [ ]
    		self.bouquetSel = None
    		self.eventView = None
    		self["EPGActions"] = HelpableActionMap(self, "InfobarEPGActions",
    			{
    				"showEventInfo": (self.openEventView, _("show EPG...")),
    				"showEventInfoPlugin": (self.showEventInfoPlugins, _("list of EPG views...")),
    				"showInfobarOrEpgWhenInfobarAlreadyVisible": self.showEventInfoWhenNotVisible,
    				"showSingleServiceEPG": (self.openSingleServiceEPG, _("show single service EPG...")),
    			})
  5. Сохраняем изменения в файле и закрываем его.
  6. Находим и открываем файл /usr/share/enigma2/keymap.xml
  7. Находим в этом файле секцию "InfobarEPGActions".
    Выглядит она вот так (то, что нам надо выделено красным):
    Код:
    	<map context="InfobarEPGActions">
    		<key id="KEY_INFO" mapto="showEventInfo" flags="b" />
    		<key id="KEY_INFO" mapto="showEventInfoPlugin" flags="l" />
    	</map>
  8. Привидем эту секцию к такому виду:
    Код:
    	<map context="InfobarEPGActions">
    		<key id="KEY_INFO" mapto="showSingleServiceEPG" flags="b" />
    		<key id="KEY_INFO" mapto="showEventInfoPlugin" flags="l" />
    	</map>
  9. Сохраняем изменения в файле(ax) и делаем Restart GUI через меню Дрима.
__________________
  • DM600PVR: Gemini 4.70, mgcamd_1.35/mpcs_16e, HDD 160GB
  • ET9200: Image: OpenPLi 3.0; oscam 1830; HDD 160GB

Последний раз редактировалось vlamo; 22.09.2010 в 16:06.
  Ответить с цитированием

Старый 26.09.2010, 17:48   #14
Специалист
 
Аватар для vlamo
 
vlamo вне форума
Регистрация: 01.11.2007
Сообщений: 2,321
Отправить сообщение для vlamo с помощью ICQ
По умолчанию

Цитата:
Сообщение от pontifex Посмотреть сообщение
При добавлении таймера, по умолчанию прделагается действие "записать".
Нельзя ли сделать, чтобы по умолчанию всегда было "переключить"?
Можно. Вот решение:
  1. Находим и открываем файл /usr/lib/enigma2/python/Screens/TimerEntry.py
  2. Находим класс "TimerEntry".
  3. Находим в этом классе функцию "createConfig".
    Функция длиная, но в начале у нее есть объявление переменной "justplay", вот оно то нам и нужно.
    Выглядит это так:
    Код:
    	def createConfig(self):
    		justplay = self.timer.justplay
    
    		afterevent = {
    			AFTEREVENT.NONE: "nothing",
    			AFTEREVENT.DEEPSTANDBY: "deepstandby",
    			AFTEREVENT.STANDBY: "standby",
    			AFTEREVENT.AUTO: "auto"
    			}[self.timer.afterEvent]
    
    		....
    		....
  4. Установим значение переменной justplay в True и начало функции теперь будет выглядеть так:
    Код:
    	def createConfig(self):
    		justplay = True
    
    		afterevent = {
    			AFTEREVENT.NONE: "nothing",
    			AFTEREVENT.DEEPSTANDBY: "deepstandby",
    			AFTEREVENT.STANDBY: "standby",
    			AFTEREVENT.AUTO: "auto"
    			}[self.timer.afterEvent]
    
    		....
    		....
  5. Сохраняем изменения в файле и делаем Restart GUI через меню Дрима.

PS. Возможные баги полностью не отслежены! Если такие будут выявлены, просьба: сообщить об оных.
__________________
  • DM600PVR: Gemini 4.70, mgcamd_1.35/mpcs_16e, HDD 160GB
  • ET9200: Image: OpenPLi 3.0; oscam 1830; HDD 160GB
  Ответить с цитированием

Старый 27.09.2010, 20:58   #15
ФАКер
 
Аватар для lagush
 
lagush вне форума
Регистрация: 24.05.2006
Сообщений: 6,765
Отправить сообщение для lagush с помощью ICQ
По умолчанию

Индикация поворота антенны.

Лично мне, после дрима 500 не нравится индикация поворота антенны в энигме2. Мигающая тарелка похожая на унитаз - смотрится убого и неинформативно.

Господин vlamo написал новый модуль Dish.py, который выводит на экран позицию откуда идет поворот, позицию куда идет поворот и примерный обратный отсчет времени до конца поворота. Смотрим файл Dish.py-v.0.4.zip из прицепки.
Вот примерно так:



Установка.
Распаковываем файл Dish.py и копируем его в папку дрима /usr/lib/enigma2/python/Screens/
Предварительно рекомендую сохранить оригинальный файл Dish.py. Если что-то пойдет не так, всегда можно вернуть все назад.

Для примера, я чуток изменил скин данного модуля и сделал вывод похожим на дрим 500. Файл Dish_lagush из прицепки.



Т.е. каждый может сам себе придумать оформление по вкусу.

Время вычисляется из расчета, что мотоподвес поворачивает тарелку со скоростью 1.0 градуса в секунду на вертикальной поляризации и 1.5 гр/сек на горизонтальной поляризации.
Вложения
Тип файла: zip Dish.py-v.0.5.zip (1.9 Кб, 144 просмотров)
Тип файла: zip Dish_lagush.zip (1.8 Кб, 99 просмотров)
__________________
DM7020HD (2xDVB-S2), Merlin3+GP3 (OE1.6), HDD 2.5" 320 GB HM320JI, Wi-Fi
DM500S, Gemini 4.7, mgcamd 1.31
90cm(19E-13E-Twin9E-5E-4W)+80cm(Twin 36Е)+65cm(36E)

Последний раз редактировалось lagush; 13.10.2010 в 20:08.
  Ответить с цитированием
Ответ

Закладки


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход




Часовой пояс GMT +3, время: 13:59.


vBulletin skin developed by: eXtremepixels
Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot


Спутниковое телевидение, оборудование для прима. Ресиверы Dreanbox Multimedia.
Самые актуальные обзоры новейших спутниковых ресиверов.