Статус
В этой теме нельзя размещать новые ответы.

spartak73

Супер-Модератор
Команда форума

Учкун

Профи в Сат-ТВ
ОК.
Постараюсь завтра в этой теме подробно расписать для тех у кого проблемы с чаннелселекшн, как внести изменения вручную в свой родной файл ChannelSelection.
Думаю даже так лучше будет.
Ты сделаешь это изменение и может выложишь здесь уже точно работоспособные файлы -new, -ori..........

Сегодня уже все, я неработоспособный, праздник Навруз, я уже бухой..........
 

spartak73

Супер-Модератор
Команда форума
Учкун, с праздничком кстати. Я тоже с Азии я в Казахстане жил у нас он Наурыз назывался :friends:
 

aheles

Профи в Сат-ТВ
вобщем запустил папку Screens перекинул с 1,6 и стал работоспособен
 

Slavik_78

Любитель Сат-ТВ
Учкун, с праздничком кстати. Я тоже с Азии я в Казахстане жил у нас он Наурыз назывался :friends:

Навруз - это в Узбекистане насколько я помню. Когда я в Киргизии жил - там Нооруз был :) Отступление от темы небольшое :)
 

Учкун

Профи в Сат-ТВ
Предлагаю такой вариант установки плагина ExtraChannelSelection на другие имиджи, кроме опенпли 3.0

Так как не имея ваших ресивера с имиджем например hdmu не могу гарантировать работу корректную работу плагина, остается предложить вам самим вручную проделывать кое-какую работу.

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


Последовательность действий.
Внизу прикрепил ипк-пакет с "чистым плагином" без нужных файлов с вашего имиджа.
Но сначала нужно подготовить имидж, только потом установить пакет, так что не спешите поставить пакет......

1. Правим файл keymap.xml.
Находим чистый неизмененный файл вашего имиджа по пути
/usr/share/enigma2/keymap.xml
и копируем этот файл куда-нибудь на комп.
После этого оставшийся в имидже keymap.xml переименовываем в keymap-ori.xml

Затем открываем скопированный на комп файл keymap.xml каким-нибудь продвинутым текстовым редактором. Можно прямо в окне проги DCC, через которое обычно заходите в ресивер, можно через Notepad++ например или даже лучше через Geany и находим в кеймап файле раздел "ChannelSelectBaseActions", к примеру он может выглядеть примерно так:
Код:
	<map context="ChannelSelectBaseActions">
		<key id="KEY_RED" mapto="showAllServices" flags="m" />
		<key id="KEY_GREEN" mapto="showSatellites" flags="m" />
		<key id="KEY_YELLOW" mapto="showProviders" flags="m" />
		<key id="KEY_BLUE" mapto="showFavourites" flags="m" />
		<key id="KEY_CHANNELUP" mapto="nextBouquet" flags="m" />
		<key id="KEY_CHANNELDOWN" mapto="prevBouquet" flags="m" />
		<key id="KEY_PREVIOUS" mapto="prevMarker" flags="m" />
		<key id="KEY_NEXT" mapto="nextMarker" flags="m" />
		<key id="KEY_BACK" mapto="prevMarker" flags="m" />
		<key id="KEY_FORWARD" mapto="nextMarker" flags="m" />		
	</map>

Вот сюда в любое место в этом разделе надо добавить четыре ключа для работоспособности функции перемещения в плагине - "KEY_UP", "KEY_DOWN", "KEY_RIGHT", "KEY_LEFT"
Например, добавим эти функции в конец списка ключей, то есть вот так:
Код:
	<map context="ChannelSelectBaseActions">
		<key id="KEY_RED" mapto="showAllServices" flags="m" />
		<key id="KEY_GREEN" mapto="showSatellites" flags="m" />
		<key id="KEY_YELLOW" mapto="showProviders" flags="m" />
		<key id="KEY_BLUE" mapto="showFavourites" flags="m" />
		<key id="KEY_CHANNELUP" mapto="nextBouquet" flags="m" />
		<key id="KEY_CHANNELDOWN" mapto="prevBouquet" flags="m" />
		<key id="KEY_PREVIOUS" mapto="prevMarker" flags="m" />
		<key id="KEY_NEXT" mapto="nextMarker" flags="m" />
		<key id="KEY_BACK" mapto="prevMarker" flags="m" />
		<key id="KEY_FORWARD" mapto="nextMarker" flags="m" />		
		<key id="KEY_UP" mapto="ServiceUp" flags="m" />
		<key id="KEY_DOWN" mapto="ServiceDown" flags="m" />
		<key id="KEY_RIGHT" mapto="ServicePageDown" flags="m" />
		<key id="KEY_LEFT" mapto="ServicePageUp" flags="m" />
	</map>

Сохраняем. Далее из вот этого измененного файла надо создать две копии, одну назвать собственно keymap.xml а вторую копию назвать keymap-new.xml и закинуть эти два файла в ресивер туда же.....

2. Теперь эти же ключи добавляем в файл ChannelSelection.py иначе они не будут работать. Значит идем по пути
/usr/lib/enigma2/python/Screens/
и находя там файл оригинальный, неизмененный плагином файл ChannelSelection.py проделываем с ним те же операции.
Копируем куда-нибудь на комп, а оставшийся в имидже файл переименовываем из ChannelSelection.py в ChannelSelection-ori.py.
Затем открываем все тем же продвинутым редактором скопированный на комп файл ChannelSelection.py и находим как понимаете класс все с тем же названием ChannelSelectionBase (на какой раздел вносили ключи в кеймап), то есть раздел начинающийся с такой строки:
Код:
class ChannelSelectionBase(Screen):

И тут конечно же находим именно функцию под названием того же самого раздела с кеймап, то есть ChannelSelectBaseActions, то есть примерно вот такую запись:
Код:
		self['ChannelSelectBaseActions'] = NumberActionMap(['ChannelSelectBaseActions', 'NumberActions', 'InputAsciiActions'], {'showFavourites': self.showFavourites,
		 'showAllServices': self.showAllServices,
		 'showProviders': self.showProviders,
		 'showSatellites': self.showSatellites,
		 'nextBouquet': self.nextBouquet,
		 'prevBouquet': self.prevBouquet,
		 'nextMarker': self.nextMarker,
		 'prevMarker': self.prevMarker,
		 'gotAsciiCode': self.keyAsciiCode,
		 '1': self.keyNumberGlobal,
		 '2': self.keyNumberGlobal,
		 '3': self.keyNumberGlobal,
		 '4': self.keyNumberGlobal,
		 '5': self.keyNumberGlobal,
		 '6': self.keyNumberGlobal,
		 '7': self.keyNumberGlobal,
		 '8': self.keyNumberGlobal,
		 '9': self.keyNumberGlobal,
		 '0': self.keyNumber0})

И вот сюда в любое место среди этих ключей добавляем те же самые 4 ключа.
Например вот так:
Код:
		self['ChannelSelectBaseActions'] = NumberActionMap(['ChannelSelectBaseActions', 'NumberActions', 'InputAsciiActions'], {'showFavourites': self.showFavourites,
		 'showAllServices': self.showAllServices,
		 'showProviders': self.showProviders,
		 'showSatellites': self.showSatellites,
		 'nextBouquet': self.nextBouquet,
		 'prevBouquet': self.prevBouquet,
		 'nextMarker': self.nextMarker,
		 'prevMarker': self.prevMarker,
		 'gotAsciiCode': self.keyAsciiCode,
		 'ServiceDown': self.moveDown,
		 'ServiceUp': self.moveUp,
		 'ServicePageDown': self.movePageDown,
		 'ServicePageUp': self.movePageUp,
		 '1': self.keyNumberGlobal,
		 '2': self.keyNumberGlobal,
		 '3': self.keyNumberGlobal,
		 '4': self.keyNumberGlobal,
		 '5': self.keyNumberGlobal,
		 '6': self.keyNumberGlobal,
		 '7': self.keyNumberGlobal,
		 '8': self.keyNumberGlobal,
		 '9': self.keyNumberGlobal,
		 '0': self.keyNumber0})

И соответственно в этом же классе надо добавить непосредственно функции этих ключей. На имиджах основанных на опенпли уже в этом компоненте в этом же классе присутствуют функции moveDown и moveUp (можете поиском проверить) значит остается добавить оставшиеся две функции.

В любое место в этом же классе между двумя любыми функциями, которые начинаются на def добавим вот эти две функции:
Код:
	def movePageUp(self):
		self.servicelist.servicePageUp()

	def movePageDown(self):
		self.servicelist.servicePageDown()
Можно сразу после функции ключей, то есть было так:
Код:
		self['ChannelSelectBaseActions'] = NumberActionMap(['ChannelSelectBaseActions', 'NumberActions', 'InputAsciiActions'], {'showFavourites': self.showFavourites,
		 'showAllServices': self.showAllServices,
		 'showProviders': self.showProviders,
		 'showSatellites': self.showSatellites,
		 'nextBouquet': self.nextBouquet,
		 'prevBouquet': self.prevBouquet,
		 'nextMarker': self.nextMarker,
		 'prevMarker': self.prevMarker,
		 'gotAsciiCode': self.keyAsciiCode,
		 'ServiceDown': self.moveDown,
		 'ServiceUp': self.moveUp,
		 'ServicePageDown': self.movePageDown,
		 'ServicePageUp': self.movePageUp,
		 '1': self.keyNumberGlobal,
		 '2': self.keyNumberGlobal,
		 '3': self.keyNumberGlobal,
		 '4': self.keyNumberGlobal,
		 '5': self.keyNumberGlobal,
		 '6': self.keyNumberGlobal,
		 '7': self.keyNumberGlobal,
		 '8': self.keyNumberGlobal,
		 '9': self.keyNumberGlobal,
		 '0': self.keyNumber0})
		self.maintitle = _('Channel selection')
                            self.recallBouquetMode()

	def getBouquetNumOffset(self, bouquet):
		if not config.usage.multibouquet.value:
			return 0
		str = bouquet.toString()
		offset = 0
		if 'userbouquet.' in bouquet.toCompareString():
			serviceHandler = eServiceCenter.getInstance()
			servicelist = serviceHandler.list(bouquet)
			if servicelist is not None:
				while True:
					serviceIterator = servicelist.getNext()
					if not serviceIterator.valid():
						break
					number = serviceIterator.getChannelNum()
					if number > 0:
						offset = number - 1
						break


Станет так:

Код:
		self['ChannelSelectBaseActions'] = NumberActionMap(['ChannelSelectBaseActions', 'NumberActions', 'InputAsciiActions'], {'showFavourites': self.showFavourites,
		 'showAllServices': self.showAllServices,
		 'showProviders': self.showProviders,
		 'showSatellites': self.showSatellites,
		 'nextBouquet': self.nextBouquet,
		 'prevBouquet': self.prevBouquet,
		 'nextMarker': self.nextMarker,
		 'prevMarker': self.prevMarker,
		 'gotAsciiCode': self.keyAsciiCode,
		 'ServiceDown': self.moveDown,
		 'ServiceUp': self.moveUp,
		 'ServicePageDown': self.movePageDown,
		 'ServicePageUp': self.movePageUp,
		 '1': self.keyNumberGlobal,
		 '2': self.keyNumberGlobal,
		 '3': self.keyNumberGlobal,
		 '4': self.keyNumberGlobal,
		 '5': self.keyNumberGlobal,
		 '6': self.keyNumberGlobal,
		 '7': self.keyNumberGlobal,
		 '8': self.keyNumberGlobal,
		 '9': self.keyNumberGlobal,
		 '0': self.keyNumber0})
		self.maintitle = _('Channel selection')
                            self.recallBouquetMode()

	def movePageUp(self):
		self.servicelist.servicePageUp()

	def movePageDown(self):
		self.servicelist.servicePageDown()

	def getBouquetNumOffset(self, bouquet):
		if not config.usage.multibouquet.value:
			return 0
		str = bouquet.toString()
		offset = 0
		if 'userbouquet.' in bouquet.toCompareString():
			serviceHandler = eServiceCenter.getInstance()
			servicelist = serviceHandler.list(bouquet)
			if servicelist is not None:
				while True:
					serviceIterator = servicelist.getNext()
					if not serviceIterator.valid():
						break
					number = serviceIterator.getChannelNum()
					if number > 0:
						offset = number - 1
						break

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

Сохраняем изменения в ChannelSelection.py и затем также из этого файла создаем две копии ChannelSelection.py и ChannelSelection-new.py и закидываем обратно в имидж.

Все работоспособность плагина обеспечена.

3. Только после этого устанавливаем нижеприложенный ипк-пакет.

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

А если есть желание наблюдать количество каналов SD и HD в списке спутников, обращайтесь к spartak73 , он спец по вашим имиджам.....
 

Вложения

  • enigma2-plugin-systemplugins-extrachannelselection_1.7a_all.zip
    48,9 KB · Просмотры: 39

oldkiller

Профи в Сат-ТВ
Учкун, Ну собственно плагин работает (Правда цвета не совсем из скина :) )
До --> После-->

А вот перемещение каналов .....


И позиция в списке не меняется
 

spartak73

Супер-Модератор
Команда форума

oldkiller

Профи в Сат-ТВ

spartak73

Супер-Модератор
Команда форума
И что не работает после этого перемещение каналов в контекстном меню?
 

oldkiller

Профи в Сат-ТВ
spartak73, По крайней мере у меня , нет ...
 

Учкун

Профи в Сат-ТВ
Значит у вас нет тех двух функций. которые на имидже опенпли уже есть.
Как я говорил поиском проверяли?
Закиньте сюда ваш, вами же измененнный файл чаннелселекшн, тогда я смогу вразумительно ответить.........
 

oldkiller

Профи в Сат-ТВ
Учкун, Держите ...
 
Последнее редактирование:

Учкун

Профи в Сат-ТВ
Посмотрел.
Ребята вы в каком редакторе работаете?
Никакими табуляциями и не пахнет.
Функции добавленные ушли куда то влево, причем есть строчка с табуляцией, а большинство с пробелами, как понять?
Нет конечно может быть не в этом проблема, но просто вопрос, вы что и кеймап также редактировали?

Вот файл от oldkiller табуляции нормально поставил, попробуйте-ка....
Но в любом случае мне кажется надо FAQ написать про пробелы и табуляции.........
 

Вложения

  • ChannelSelection-new2.zip
    11,4 KB · Просмотры: 24

oldkiller

Профи в Сат-ТВ
Последнее редактирование:

spartak73

Супер-Модератор
Команда форума
Но в любом случае мне кажется надо FAQ написать про пробелы и табуляции.........

Про табуляции я лично знаю. Всегда сравниваю и проверяю... Не всегда почему то у меня табулятором правильно выходит. Так что иногда я пробелами это заменяю. Знаю что питон не любит когда вместе пробелы и табуляция :)
 

spartak73

Супер-Модератор
Команда форума
Учкун, а разве не ServiceList нужно редактировать для перемещения каналов? Мне кажется там загвоздка. Если я возвращаю назад оригинальный файл то все работает. В ServiceList тоже вносились изменения для перемещения?
 

Учкун

Профи в Сат-ТВ
Копался, копался, наконец докопался.
Я просто забыл решающее обстоятельство.
Потому у вас и не работало перемещение.
Вобщем при внесении тех четырех ключей в компоненте чаннелселекшн, надо выставить аргумент -1 с запятой

То есть вот так:

Код:
		self['ChannelSelectBaseActions'] = NumberActionMap(['ChannelSelectBaseActions', 'NumberActions', 'InputAsciiActions'], {'showFavourites': self.showFavourites,
		 'showAllServices': self.showAllServices,
		 'showProviders': self.showProviders,
		 'showSatellites': self.showSatellites,
		 'nextBouquet': self.nextBouquet,
		 'prevBouquet': self.prevBouquet,
		 'nextMarker': self.nextMarker,
		 'prevMarker': self.prevMarker,
		 'gotAsciiCode': self.keyAsciiCode,
		 'ServiceDown': self.moveDown,
		 'ServiceUp': self.moveUp,
		 'ServicePageDown': self.movePageDown,
		 'ServicePageUp': self.movePageUp,
		 '1': self.keyNumberGlobal,
		 '2': self.keyNumberGlobal,
		 '3': self.keyNumberGlobal,
		 '4': self.keyNumberGlobal,
		 '5': self.keyNumberGlobal,
		 '6': self.keyNumberGlobal,
		 '7': self.keyNumberGlobal,
		 '8': self.keyNumberGlobal,
		 '9': self.keyNumberGlobal,
		 '0': self.keyNumber0}, -1)

Видите, после закрытия ключей фигурной скобкой даете запятую, один пробел и аргумент -1 и закрываете скобкой.

Поставьте вот так и все заработает.......

spartak73 сервислист нипричем, там конечно есть эта функция уже......
 

oldkiller

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