Поскольку многие пользователи Gi начинали с Drima 500 они привыкли к определённым фишкам присутствующим в Enigma 1 и отсутствующим в Enigma 2. Попробуем по возможности это исправить, а так же просто что то изменить для удобства юзера. У всех файлов выложенных мной, ноги растут из темы "Тюнинг Энигма 2" автор Vlamo с соседнего ресурса. Так что все лавры ему, с моей стороны только прямые руки. До этого сами файлы в свободном доступе не выкладывались, а были только инструкции. Перед выкладкой все файлы проверяются на последнем имидже Black Hole, на остальных тоже должны работать норм, но всегда сохраняйте копии оригинальных файлов. После любых изменений файлов/для применения изменений рестартуем энигму. Аttention Предполагается использование на имиджах без ежедневного обновления. Как пишет сообщество, на PLI твики либо вообще не работают, либо будут слетать после обновлений.
1. Задача: Сделать цифровое отображение количества каналов в пакетах после их названия как в Dreambox500s. Добавляем отображение количества сервисов в папках Services и New в списке каналов для enigma2. Решение: Меняем файл по пути /usr/lib/enigma2/python/Screens/ChannelSelection.py на тот что в прицепе.
2. Задача: В менюшке записи поменять 1,2 позицию местами Решение: Меняем файл по пути /usr/lib/enigma2/python/Screens/InfoBarGenerics.py на тот что в прицепе. Автор SatCat
Grizli предложил организовать такой твик и меня это заинтересовало. Смысл твика:
Если в скине в разделе ChannelSelection использован виджет "Title", то название окна выбора каналов внутри фаворитов выглядит так: Выбор канала (ТВ) - Фавориты / Название_фаворита Так вот grizli предложил оставить только Название_фаворита, что будет куда логичнее, смотрибельнее, да и место освободится рядом для чего-то еще.....
Покажу на примере как это сделать.
Вот как выглядит это окно (обращаем внимание на название окна) до организации данного твика
То есть пока название окна выглядит так Выбор канала (ТВ) - Фавориты /Любимое ТВ
Открываем файл ChannelSelection.py, находящийся в имидже по пути:
Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра. И наконец добираемся до самой нужной инструкции def buildTitleString(self):, которая собственно и создает название окна выбора каналов. Здесь находим строчку:
Внимание! При всех изменениях в питоновском файле не забываем о "золотом" правиле об отступах-табуляциях! Также не забываем, что редактировать файлы питона можно только на самых продвинутых текстовых редакторах. При нарушении любого из этих правил, просто испортите файл и будете зеленеть....
На всякий случай прописываю здесь тот самый измененный класс (вернее часть класса) из опенпли 4.0...
Спойлер:
class ChannelSelectionBase(Screen): def __init__(self, session): Screen.__init__(self, session)
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 not servicelist is None: while True: serviceIterator = servicelist.getNext() if not serviceIterator.valid(): #check if end of list break number = serviceIterator.getChannelNum() if number > 0: offset = number - 1 break return offset
def recallBouquetMode(self): if self.mode == MODE_TV: self.service_types = service_types_tv if config.usage.multibouquet.value: self.bouquet_rootstr = '1:7:1:0:0:0:0:0:0:0:FROM BOUQUET "bouquets.tv" ORDER BY bouquet' else: self.bouquet_rootstr = '%s FROM BOUQUET "userbouquet.favourites.tv" ORDER BY bouquet'%(self.service_types) else: self.service_types = service_types_radio if config.usage.multibouquet.value: self.bouquet_rootstr = '1:7:1:0:0:0:0:0:0:0:FROM BOUQUET "bouquets.radio" ORDER BY bouquet' else: self.bouquet_rootstr = '%s FROM BOUQUET "userbouquet.favourites.radio" ORDER BY bouquet'%(self.service_types) self.bouquet_root = eServiceReference(self.bouquet_rootstr)
def setTvMode(self): self.mode = MODE_TV self.servicePath = self.servicePathTV self.recallBouquetMode() title = self.maintitle pos = title.find(" (") if pos != -1: title = title[:pos] title += _(" (TV)") self.setTitle(title)
def setRadioMode(self): self.mode = MODE_RADIO self.servicePath = self.servicePathRadio self.recallBouquetMode() title = self.maintitle pos = title.find(" (") if pos != -1: title = title[:pos] title += _(" (Radio)") self.setTitle(title)
def setRoot(self, root, justSet=False): if self.startRoot is None: self.startRoot = self.getRoot() path = root.getPath() isBouquet = 'FROM BOUQUET' in path and (root.flags & eServiceReference.isDirectory) inBouquetRootList = 'FROM BOUQUET "bouquets.' in path #FIXME HACK if not inBouquetRootList and isBouquet: self.servicelist.setMode(ServiceList.MODE_FAVOURITES) else: self.servicelist.setMode(ServiceList.MODE_NORMAL) self.servicelist.setRoot(root, justSet) self.rootChanged = True self.buildTitleString()
def getServiceName(self, ref): str = self.removeModeStr(ServiceReference(ref).getServiceName()) if 'User - bouquets' in str: return "" if not str: pathstr = ref.getPath() if 'FROM PROVIDERS' in pathstr: return _("Provider") if 'FROM SATELLITES' in pathstr: return _("Satellites") if ') ORDER BY name' in pathstr: return _("All") return str
def buildTitleString(self): titleStr = self.getTitle() pos = titleStr.find(']') if pos == -1: pos = titleStr.find(')') if pos != -1: titleStr = titleStr[:pos+1] Len = len(self.servicePath) if Len > 0: base_ref = self.servicePath[0] if Len > 1: end_ref = self.servicePath[Len-1] else: end_ref = None nameStr = self.getServiceName(base_ref) titleStr += ' - ' + nameStr if end_ref is not None: if Len > 2: titleStr += '/../' else: titleStr += '' nameStr = self.getServiceName(end_ref) titleStr += nameStr self.setTitle(titleStr)
А вот как теперь выглядит это окно после этого твика (вернее название окна выбора каналов):
То есть теперь вместо вот этой строчки Выбор канала (ТВ) - Фавориты /Любимое ТВ вот такая строчка (ТВ) - Любимое ТВ
Еще раз уточняю, что данный твик будет работоспособен, если только на вашем скине в разделе "Channel Selection" использован виджет "Title". Некоторые скиномастера не используют этот виджет. Например насколько я знаю многоуважаемый Sirius0103 предпочитает вместо этого виджета использовать статический текст. Если так, в таком скине этот твик не заработает.....