X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/e66f4bdb5fd20a77e5db713d732275aa32b22af5..37b5c400229659a35cab2052f8d9c3bf12d677f3:/lib/python/Screens/ChannelSelection.py diff --git a/lib/python/Screens/ChannelSelection.py b/lib/python/Screens/ChannelSelection.py index e1402aea..64ae5492 100644 --- a/lib/python/Screens/ChannelSelection.py +++ b/lib/python/Screens/ChannelSelection.py @@ -1,28 +1,37 @@ +from Tools.Profile import profile + from Screen import Screen from Components.Button import Button from Components.ServiceList import ServiceList from Components.ActionMap import NumberActionMap, ActionMap, HelpableActionMap from Components.MenuList import MenuList -from Components.ServiceEventTracker import ServiceEventTracker +from Components.ServiceEventTracker import ServiceEventTracker, InfoBarBase +profile("ChannelSelection.py 1") from EpgSelection import EPGSelection from enigma import eServiceReference, eEPGCache, eServiceCenter, eRCInput, eTimer, eDVBDB, iPlayableService, iServiceInformation, getPrevAsciiCode from Components.config import config, ConfigSubsection, ConfigText from Tools.NumericalTextInput import NumericalTextInput +profile("ChannelSelection.py 2") from Components.NimManager import nimmanager -from Components.Sources.Source import ObsoleteSource +profile("ChannelSelection.py 2.1") from Components.Sources.RdsDecoder import RdsDecoder +profile("ChannelSelection.py 2.2") from Components.Sources.ServiceEvent import ServiceEvent +profile("ChannelSelection.py 2.3") from Components.Input import Input +profile("ChannelSelection.py 3") from Components.ParentalControl import parentalControl from Components.Pixmap import Pixmap from Screens.InputBox import InputBox, PinInput from Screens.MessageBox import MessageBox from Screens.ServiceInfo import ServiceInfo +profile("ChannelSelection.py 4") from Screens.RdsDisplay import RassInteractive from ServiceReference import ServiceReference from Tools.BoundFunction import boundFunction from re import compile from os import remove +profile("ChannelSelection.py after imports") FLAG_SERVICE_NEW_FOUND = 64 #define in lib/dvb/idvb.h as dxNewFound = 64 @@ -103,6 +112,8 @@ class ChannelContextMenu(Screen): else: append_when_current_valid(current, menu, (_("add service to favourites"), self.addServiceToBouquetSelected), level = 0) else: + if current_root.getPath().find('FROM SATELLITES') != -1: + append_when_current_valid(current, menu, (_("remove selected satellite"), self.removeSatelliteServices), level = 0) if haveBouquets: if not inBouquet and current_sel_path.find("PROVIDERS") == -1: append_when_current_valid(current, menu, (_("copy to bouquets"), self.copyCurrentToBouquetList), level = 0) @@ -196,6 +207,17 @@ class ChannelContextMenu(Screen): if recursive: self.close(False) + def removeSatelliteServices(self): + curpath = self.csel.getCurrentSelection().getPath() + idx = curpath.find("satellitePosition == ") + if idx != -1: + tmp = curpath[idx+21:] + idx = tmp.find(')') + if idx != -1: + satpos = int(tmp[:idx]) + eDVBDB.getInstance().removeServices(-1, -1, -1, satpos) + self.close() + def copyCurrentToBouquetList(self): self.csel.copyCurrentToBouquetList() self.close() @@ -276,7 +298,7 @@ class SelectionEventInfo: self["ServiceEvent"] = ServiceEvent() self.servicelist.connectSelChanged(self.__selectionChanged) self.timer = eTimer() - self.timer.timeout.get().append(self.updateEventInfo) + self.timer.callback.append(self.updateEventInfo) self.onShown.append(self.__selectionChanged) def __selectionChanged(self): @@ -409,10 +431,10 @@ class ChannelSelectionEdit: if mutableBouquetList: if self.mode == MODE_TV: bName += " (TV)" - str = '1:7:1:0:0:0:0:0:0:0:(type == 1) FROM BOUQUET \"userbouquet.%s.tv\" ORDER BY bouquet'%(self.buildBouquetID(bName)) + str = '1:7:1:0:0:0:0:0:0:0:FROM BOUQUET \"userbouquet.%s.tv\" ORDER BY bouquet'%(self.buildBouquetID(bName)) else: bName += " (Radio)" - str = '1:7:2:0:0:0:0:0:0:0:(type == 2) FROM BOUQUET \"userbouquet.%s.radio\" ORDER BY bouquet'%(self.buildBouquetID(bName)) + str = '1:7:2:0:0:0:0:0:0:0:FROM BOUQUET \"userbouquet.%s.radio\" ORDER BY bouquet'%(self.buildBouquetID(bName)) new_bouquet_ref = eServiceReference(str) if not mutableBouquetList.addService(new_bouquet_ref): mutableBouquetList.flushChanges() @@ -620,7 +642,7 @@ MODE_TV = 0 MODE_RADIO = 1 # this makes it much simple to implement a selectable radio or tv mode :) -service_types_tv = '1:7:1:0:0:0:0:0:0:0:(type == 1) || (type == 17) || (type == 195) || (type == 25)' +service_types_tv = '1:7:1:0:0:0:0:0:0:0:(type == 1) || (type == 17) || (type == 195) || (type == 25) || (type == 134)' service_types_radio = '1:7:2:0:0:0:0:0:0:0:(type == 2)' class ChannelSelectionBase(Screen): @@ -986,14 +1008,6 @@ class ChannelSelectionBase(Screen): return self.servicelist.getCurrent() def setCurrentSelection(self, service): - servicepath = service.getPath() - pos = servicepath.find(" FROM BOUQUET") - if pos != -1: - if self.mode == MODE_TV: - servicepath = '(type == 1)' + servicepath[pos:] - else: - servicepath = '(type == 2)' + servicepath[pos:] - service.setPath(servicepath) self.servicelist.setCurrent(service) def getBouquetList(self): @@ -1064,8 +1078,6 @@ class ChannelSelection(ChannelSelectionBase, ChannelSelectionEdit, ChannelSelect ChannelSelectionEPG.__init__(self) SelectionEventInfo.__init__(self) - self["CurrentTime"] = ObsoleteSource(new_source = "global.CurrentTime", removal_date = "2008-01") - self["actions"] = ActionMap(["OkCancelActions", "TvRadioActions"], { "cancel": self.cancel, @@ -1081,7 +1093,7 @@ class ChannelSelection(ChannelSelectionBase, ChannelSelectionEdit, ChannelSelect }) self.lastChannelRootTimer = eTimer() - self.lastChannelRootTimer.timeout.get().append(self.__onCreate) + self.lastChannelRootTimer.callback.append(self.__onCreate) self.lastChannelRootTimer.start(100,True) self.history_tv = [ ] @@ -1318,25 +1330,19 @@ class ChannelSelection(ChannelSelectionBase, ChannelSelectionEdit, ChannelSelect self.asciiOff() self.close(None) -from Screens.InfoBarGenerics import InfoBarEvent, InfoBarServiceName - -class RadioInfoBar(Screen, InfoBarEvent, InfoBarServiceName): +class RadioInfoBar(Screen): def __init__(self, session): Screen.__init__(self, session) - InfoBarEvent.__init__(self) - InfoBarServiceName.__init__(self) - self["CurrentTime"] = ObsoleteSource(new_source = "global.CurrentTime", removal_date = "2008-01") self["RdsDecoder"] = RdsDecoder(self.session.nav) - self["BlinkingPoint"] = Pixmap() - self["BlinkingPoint"].hide() -class ChannelSelectionRadio(ChannelSelectionBase, ChannelSelectionEdit, ChannelSelectionEPG): +class ChannelSelectionRadio(ChannelSelectionBase, ChannelSelectionEdit, ChannelSelectionEPG, InfoBarBase): ALLOW_SUSPEND = True def __init__(self, session, infobar): ChannelSelectionBase.__init__(self, session) ChannelSelectionEdit.__init__(self) ChannelSelectionEPG.__init__(self) + InfoBarBase.__init__(self) self.infobar = infobar self.onLayoutFinish.append(self.onCreate)