Exemplo n.º 1
0
	def calculateFilename(self):
		service_name = self.service_ref.getServiceName()
		begin_date = strftime("%Y%m%d %H%M", localtime(self.begin))
		begin_shortdate = strftime("%Y%m%d", localtime(self.begin))
		
		print "begin_date: ", begin_date
		print "service_name: ", service_name
		print "name:", self.name
		print "description: ", self.description
		
		filename = begin_date + " - " + service_name
		if self.name:
			if config.usage.setup_level.index >= 2: # expert+
				if config.recording.filename_composition.value == "short":
					filename = begin_shortdate + " - " + self.name
				elif config.recording.filename_composition.value == "long":
					filename += " - " + self.name + " - " + self.description
				else:
					filename += " - " + self.name # standard
			else:
				filename += " - " + self.name

		if config.recording.ascii_filenames.value:
			filename = ASCIItranslit.legacyEncode(filename)

		if not self.dirname or not Directories.fileExists(self.dirname, 'w'):
			if self.dirname:
				self.dirnameHadToFallback = True
			dirname = defaultMoviePath()
		else:
			dirname = self.dirname
		self.Filename = Directories.getRecordingFilename(filename, dirname)
		self.log(0, "Filename calculated as: '%s'" % self.Filename)
Exemplo n.º 2
0
	def calculateFilename(self, name=None):
		service_name = self.service_ref.getServiceName()
		begin_date = strftime("%Y%m%d %H%M", localtime(self.begin))
		name = name or self.name
		filename = begin_date + " - " + service_name
		if name:
			if config.recording.filename_composition.value == "event":
				filename = name + ' - ' + begin_date + "_" + service_name
			elif config.recording.filename_composition.value == "short":
				filename = strftime("%Y%m%d", localtime(self.begin)) + " - " + name
			elif config.recording.filename_composition.value == "long":
				filename += " - " + name + " - " + self.description
			else:
				filename += " - " + name # standard

		if config.recording.ascii_filenames.value:
			filename = ASCIItranslit.legacyEncode(filename)
		if not self.dirname:
			dirname = (defaultMoviePath())
		else:
			dirname = (self.dirname)
			if dirname is None:
				dirname = (defaultMoviePath())
				self.dirnameHadToFallback = True
		if not dirname:
			return None
		self.Filename = Directories.getRecordingFilename(filename, dirname)
		self.log(0, "Filename calculated as: '%s'" % self.Filename)
		return self.Filename
Exemplo n.º 3
0
	def calculateFilename(self):
		service_name = self.service_ref.getServiceName()
		begin_date = strftime("%Y%m%d %H%M", localtime(self.begin))

#		print "begin_date: ", begin_date
#		print "service_name: ", service_name
#		print "name:", self.name
#		print "description: ", self.description
#
		filename = begin_date + " - " + service_name
		if self.name:
			if config.recording.filename_composition.getValue() == "short":
				filename = strftime("%Y%m%d", localtime(self.begin)) + " - " + self.name
			elif config.recording.filename_composition.getValue() == "long":
				filename += " - " + self.name + " - " + self.description
			else:
				filename += " - " + self.name # standard

		if config.recording.ascii_filenames.getValue():
			filename = ASCIItranslit.legacyEncode(filename)


		if not self.dirname:
			dirname = findSafeRecordPath(defaultMoviePath())
		else:
			dirname = findSafeRecordPath(self.dirname)
			if dirname is None:
				dirname = findSafeRecordPath(defaultMoviePath())
				self.dirnameHadToFallback = True
		if not dirname:
			return None
		self.Filename = Directories.getRecordingFilename(filename, dirname)
		self.log(0, "Filename calculated as: '%s'" % self.Filename)
		return self.Filename
Exemplo n.º 4
0
	def loadTimer(self):
		# TODO: PATH!
		if not Directories.fileExists(self.Filename):
			return
		try:
			file = open(self.Filename, 'r')
			doc = xml.etree.cElementTree.parse(file)
			file.close()
		except SyntaxError:
			from Tools.Notifications import AddPopup
			from Screens.MessageBox import MessageBox

			AddPopup(_("The timer file (timers.xml) is corrupt and could not be loaded."), type = MessageBox.TYPE_ERROR, timeout = 0, id = "TimerLoadFailed")

			print "[RecordTimer] timers.xml failed to load!"
			try:
				os.rename(self.Filename, self.Filename + "_old")
			except (IOError, OSError):
				print "[RecordTimer] renaming broken timer failed"
			return
		except IOError:
			print "[RecordTimer] timers.xml not found!"
			return

		root = doc.getroot()

		# put out a message when at least one timer overlaps
		checkit = True
		for timer in root.findall("timer"):
			newTimer = createTimer(timer)
			if (self.record(newTimer, True, dosave=False) is not None) and (checkit == True):
				from Tools.Notifications import AddPopup
				from Screens.MessageBox import MessageBox
				AddPopup(_("Timer overlap in timers.xml detected!\nPlease recheck it!"), type = MessageBox.TYPE_ERROR, timeout = 0, id = "TimerLoadFailed")
				checkit = False # at moment it is enough when the message is displayed one time
Exemplo n.º 5
0
    def __init__(self, session, newTimer):
        self.xmlfile = Directories.resolveFilename(
            Directories.SCOPE_PLUGINS, "Extensions/AutoTimer/autotimerwizard.xml"
        )

        WizardLanguage.__init__(self, session, showSteps=True, showStepSlider=True)
        AutoTimerEditorBase.__init__(self, newTimer)
        Rc.__init__(self)

        # self.skinName = ["AutoTimerWizard", "NetworkWizard"]
        self["wizard"] = Pixmap()
        self["HelpWindow"] = Pixmap()
        self["HelpWindow"].hide()
        self["VKeyIcon"] = Boolean(False)

        self.doCancel = False
        self.emptyMatch = False
        self.tailingWhitespacesMatch = False

        # We might need to change shown items, so add some notifiers
        self.timespan.addNotifier(self.regenTimespanList, initial_call=False)
        self.generateTimespanList()

        self.servicesDlg = self.session.instantiateDialog(
            AutoTimerServiceEditor, self.serviceRestriction, self.services, self.bouquets
        )

        self.filterDlg = self.session.instantiateDialog(
            AutoTimerFilterEditor, self.filterSet, self.excludes, self.includes
        )

        self["TextEntryActions"] = ActionMap(
            ["TextEntryActions"], {"deleteForward": self.deleteForward, "deleteBackward": self.deleteBackward}, -2
        )
Exemplo n.º 6
0
	def calculateFilename(self):
		service_name = self.service_ref.getServiceName()
		begin_date = strftime("%Y%m%d %H%M", localtime(self.begin))

#		print "begin_date: ", begin_date
#		print "service_name: ", service_name
#		print "name:", self.name
#		print "description: ", self.description
#
		filename = begin_date + " - " + service_name
		if self.name:
			if config.recording.filename_composition.value == "veryveryshort":
				filename = self.name
			elif config.recording.filename_composition.value == "veryshort":
				filename = self.name + " - " + begin_date
			elif config.recording.filename_composition.value == "short":
				filename = strftime("%Y%m%d", localtime(self.begin)) + " - " + self.name
			elif config.recording.filename_composition.value == "long":
				filename += " - " + self.name + " - " + self.description
			else:
				filename += " - " + self.name # standard

		if config.recording.ascii_filenames.value:
			filename = ASCIItranslit.legacyEncode(filename)

		self.Filename = Directories.getRecordingFilename(filename, self.MountPath)
		if debug:
			self.log(0, "Filename calculated as: '%s'" % self.Filename)
		return self.Filename
Exemplo n.º 7
0
 def createDirCallback(self, res):
     if res:
         path = os.path.join(self['filelist'].current_directory, res)
         if not os.path.exists(path):
             if not Directories.createDir(path):
                 self.session.open(MessageBox, _('Creating directory %s failed.') % path, type=MessageBox.TYPE_ERROR, timeout=5)
             self['filelist'].refresh()
         else:
             self.session.open(MessageBox, _('The path %s already exists.') % path, type=MessageBox.TYPE_ERROR, timeout=5)
Exemplo n.º 8
0
	def __init__(self):
		timer.Timer.__init__(self)

		self.Filename = Directories.resolveFilename(Directories.SCOPE_CONFIG, "pm_timers.xml")

		try:
			self.loadTimer()
		except IOError:
			print "unable to load timers from file!"
Exemplo n.º 9
0
					def dirAction(choice):
						if choice:
							if choice[1] == "folder":
								if not Directories.createDir(ret):
									self.session.open(MessageBox, _("Creating directory %s failed.") % (ret), type = MessageBox.TYPE_ERROR)
									return
							self.close(ret)
						else:
							self.cancel()
Exemplo n.º 10
0
	def __init__(self, session):
		self.xmlfile = Directories.resolveFilename(Directories.SCOPE_PLUGINS, "Extensions/GBIpboxClient/gbipboxwizard.xml")

		Wizard.__init__(self, session)

		self.setTitle(_('GBIpbox Client'))

		self.skinName = ["GBIpboxWizard", "NetworkWizard"]
		self["wizard"] = Pixmap()
		self["HelpWindow"] = Pixmap()
		self["HelpWindow"].hide()
		self["VKeyIcon"] = Boolean(False)
Exemplo n.º 11
0
 def removeDirCallback(self, name, res):
     if res:
         if not Directories.removeDir(name):
             self.session.open(MessageBox, _('Removing directory %s failed. (Maybe not empty.)') % name, type=MessageBox.TYPE_ERROR, timeout=5)
         else:
             self['filelist'].refresh()
             self.removeBookmark(name, True)
             val = self.realBookmarks and self.realBookmarks.value
             if val and name in val:
                 val.remove(name)
                 self.realBookmarks.value = val
                 self.realBookmarks.save()
Exemplo n.º 12
0
    def calculateFilename(self):
        service_name = self.service_ref.getServiceName()
        begin_date = time.strftime("%Y%m%d %H%M", time.localtime(self.begin))

        print "begin_date: ", begin_date
        print "service_name: ", service_name
        print "name:", self.name
        print "description: ", self.description

        filename = begin_date + " - " + service_name
        if self.name:
            filename += " - " + self.name

        if config.recording.ascii_filenames.value:
            filename = ASCIItranslit.legacyEncode(filename)

        if self.dirname and not Directories.fileExists(self.dirname, "w"):
            self.dirnameHadToFallback = True
            self.Filename = Directories.getRecordingFilename(filename, None)
        else:
            self.Filename = Directories.getRecordingFilename(filename, self.dirname)
        self.log(0, "Filename calculated as: '%s'" % self.Filename)
Exemplo n.º 13
0
	def __init__(self):
		timer.Timer.__init__(self)

		self.onTimerAdded = []
		self.onTimerRemoved = []
		self.onTimerChanged = []

		self.Filename = Directories.resolveFilename(Directories.SCOPE_CONFIG, "timers.xml")

		try:
			self.loadTimer()
		except IOError:
			print "unable to load timers from file!"
Exemplo n.º 14
0
    def loadStaticConfig(self):
        """
        Always try to load the static config file from
        /etc/enigma2/curlytx-pagefeed.xml
        """
        staticFeedPath = Directories.resolveFilename(Directories.SCOPE_CONFIG, self.staticPageFeedFile)
        if not os.path.exists(staticFeedPath):
            return

        from AtomFeed import AtomFeed
        AtomFeed(
            'file://' + staticFeedPath,
            self.saveStaticConfig, self.loadStaticConfigFail
            )
Exemplo n.º 15
0
    def loadTimer(self):
        if not Directories.fileExists(self.Filename):
            return
        try:
            file = open(self.Filename, 'r')
            doc = xml.etree.cElementTree.parse(file)
            file.close()
        except SyntaxError:
            from Tools.Notifications import AddPopup

            AddPopup(_(
                "The timer file (pm_timers.xml) is corrupt and could not be loaded."
            ),
                     type=MessageBox.TYPE_ERROR,
                     timeout=0,
                     id="TimerLoadFailed")

            print("[PowerTimer] pm_timers.xml failed to load!")
            try:
                os.rename(self.Filename, self.Filename + "_old")
            except (IOError, OSError):
                print("[PowerTimer] renaming broken timer failed")
            return
        except IOError:
            print("[PowerTimer] pm_timers.xml not found!")
            return

        root = doc.getroot()

        checkit = True
        for timer in root.findall("timer"):
            newTimer = createTimer(timer)
            if (self.record(newTimer, True, dosave=False)
                    is not None) and (checkit == True):
                from Tools.Notifications import AddPopup
                AddPopup(_(
                    "Timer overlap in pm_timers.xml detected!\nPlease recheck it!"
                ),
                         type=MessageBox.TYPE_ERROR,
                         timeout=0,
                         id="TimerLoadFailed")
                checkit = False
Exemplo n.º 16
0
	def __init__(self):
		assert not HdmiCec.instance, "only one HdmiCec instance is allowed!"
		HdmiCec.instance = self

		self.wait = eTimer()
		self.wait.timeout.get().append(self.sendCmd)
		self.repeat = eTimer()
		self.repeat.timeout.get().append(self.wakeupMessages)
		self.queue = []

		eHdmiCEC.getInstance().messageReceived.get().append(self.messageReceived)
		config.misc.standbyCounter.addNotifier(self.onEnterStandby, initial_call = False)
		config.misc.DeepStandby.addNotifier(self.onEnterDeepStandby, initial_call = False)
		self.setFixedPhysicalAddress(config.hdmicec.fixed_physical_address.value)
		self.logicaladdress = eHdmiCEC.getInstance().getLogicalAddress()

		self.saveVolUp = None
		self.saveVolDown = None
		self.saveVolMute = None
		self.volumeForwardingDestination = 0
		config.hdmicec.volume_forwarding.addNotifier(self.configVolumeForwarding)
		config.hdmicec.enabled.addNotifier(self.configVolumeForwarding)
		uptime = float(open("/proc/uptime", "r").read().split()[0])
		if config.hdmicec.handle_deepstandby_events.value and uptime < 120:
			filename = Directories.resolveFilename(Directories.SCOPE_CONFIG, "timers.xml")
			try:
				doc = xml.etree.cElementTree.parse(filename)
			except:
				doc = None
			if doc:
				root = doc.getroot()
				for timer in root.findall("timer"):
					begin = int(timer.get("begin"))
					disabled = long(timer.get("disabled") or "0")
					justplay = long(timer.get("justplay") or "0")
					always_zap = long(timer.get("always_zap") or "0")
					if begin < time() or begin > time() + 360 or disabled or justplay or always_zap:
						continue
					if Standby.inStandby is None:
						Notifications.AddNotification(Standby.Standby)
					return
			self.onLeaveStandby()
Exemplo n.º 17
0
	def load_pdc(self):
		try:
			doc = xml_parse(Directories.resolveFilename(Directories.SCOPE_CONFIG, "vps.xml"))
			xmlroot = doc.getroot()
			
			if xmlroot is not None:
				for xml in xmlroot.findall("channel"):
					serviceref = xml.get("serviceref").encode("utf-8")
					has_pdc = xml.get("has_pdc")
					last_check = xml.get("last_check")
					default_vps = xml.get("default_vps")
					self.checked_services[serviceref] = { }
					self.checked_services[serviceref]["last_check"] = int(last_check)
					self.checked_services[serviceref]["has_pdc"] = int(has_pdc)
					if default_vps and default_vps != "None":
						self.checked_services[serviceref]["default_vps"] = int(default_vps)
					else:
						self.checked_services[serviceref]["default_vps"] = 0
		except:
			pass
Exemplo n.º 18
0
	def load_pdc(self):
		try:
			doc = xml_parse(Directories.resolveFilename(Directories.SCOPE_CONFIG, "vps.xml"))
			xmlroot = doc.getroot()

			if xmlroot is not None:
				for xml in xmlroot.findall("channel"):
					serviceref = xml.get("serviceref").encode("utf-8")
					has_pdc = xml.get("has_pdc")
					last_check = xml.get("last_check")
					default_vps = xml.get("default_vps")
					self.checked_services[serviceref] = {}
					self.checked_services[serviceref]["last_check"] = int(last_check)
					self.checked_services[serviceref]["has_pdc"] = int(has_pdc)
					if default_vps and default_vps != "None":
						self.checked_services[serviceref]["default_vps"] = int(default_vps)
					else:
						self.checked_services[serviceref]["default_vps"] = 0
		except:
			pass
Exemplo n.º 19
0
	def __init__(self):
		assert not HdmiCec.instance, "only one HdmiCec instance is allowed!"
		HdmiCec.instance = self

		self.wait = eTimer()
		self.wait.timeout.get().append(self.sendCmd)
		self.queue = []

		eHdmiCEC.getInstance().messageReceived.get().append(self.messageReceived)
		config.misc.standbyCounter.addNotifier(self.onEnterStandby, initial_call = False)
		config.misc.DeepStandby.addNotifier(self.onEnterDeepStandby, initial_call = False)
		self.setFixedPhysicalAddress(config.hdmicec.fixed_physical_address.value)
		self.logicaladdress = eHdmiCEC.getInstance().getLogicalAddress()

		self.saveVolUp = None
		self.saveVolDown = None
		self.saveVolMute = None
		self.volumeForwardingDestination = 0
		config.hdmicec.volume_forwarding.addNotifier(self.configVolumeForwarding)
		config.hdmicec.enabled.addNotifier(self.configVolumeForwarding)
		uptime = float(open("/proc/uptime", "r").read().split()[0])
		if config.hdmicec.handle_deepstandby_events.value and uptime < 120:
			filename = Directories.resolveFilename(Directories.SCOPE_CONFIG, "timers.xml")
			try:
				doc = xml.etree.cElementTree.parse(filename)
			except:
				doc = None
			if doc:
				root = doc.getroot()
				for timer in root.findall("timer"):
					begin = int(timer.get("begin"))
					disabled = long(timer.get("disabled") or "0")
					justplay = long(timer.get("justplay") or "0")
					always_zap = long(timer.get("always_zap") or "0")
					if begin < time() or begin > time() + 360 or disabled or justplay or always_zap:
						continue
					if Standby.inStandby is None:
						Notifications.AddNotification(Standby.Standby)
					return
			self.wakeupMessages()
Exemplo n.º 20
0
	def save_pdc(self):
		list = []
		list.append('<?xml version="1.0" ?>\n')
		list.append('<pdc_available>\n')

		now = time()
		for ch in self.checked_services:
			if (self.checked_services[ch]["last_check"] < (now - check_pdc_interval_available)) and self.checked_services[ch]["default_vps"] != 1:
				continue
			list.append('<channel')
			list.append(' serviceref="' + stringToXML(ch) + '"')
			list.append(' has_pdc="' + str(int(self.checked_services[ch]["has_pdc"])) + '"')
			list.append(' last_check="' + str(int(self.checked_services[ch]["last_check"])) + '"')
			list.append(' default_vps="' + str(int(self.checked_services[ch]["default_vps"])) + '"')
			list.append('></channel>\n')

		list.append('</pdc_available>\n')

		file = open(Directories.resolveFilename(Directories.SCOPE_CONFIG, "vps.xml"), "w")
		for x in list:
			file.write(x)
		file.close()
Exemplo n.º 21
0
	def save_pdc(self):
		list = []
		list.append('<?xml version="1.0" ?>\n')
		list.append('<pdc_available>\n')
		
		now = time()
		for ch in self.checked_services:
			if (self.checked_services[ch]["last_check"] < (now - check_pdc_interval_available)) and self.checked_services[ch]["default_vps"] != 1:
				continue
			list.append('<channel')
			list.append(' serviceref="' + stringToXML(ch) + '"')
			list.append(' has_pdc="' + str(int(self.checked_services[ch]["has_pdc"])) + '"')
			list.append(' last_check="' + str(int(self.checked_services[ch]["last_check"])) + '"')
			list.append(' default_vps="' + str(int(self.checked_services[ch]["default_vps"])) + '"')
			list.append('></channel>\n')
		
		list.append('</pdc_available>\n')
		
		file = open(Directories.resolveFilename(Directories.SCOPE_CONFIG, "vps.xml"), "w")
		for x in list:
			file.write(x)
		file.close()
Exemplo n.º 22
0
	def calculateFilename(self, name=None):
		service_name = self.service_ref.getServiceName()
		begin_date = strftime("%Y%m%d %H%M", localtime(self.begin))

		name = name or self.name
		filename = begin_date + " - " + service_name
		if name:
			if config.recording.filename_composition.value == "event":
				filename = name + ' - ' + begin_date + "_" + service_name
			elif config.recording.filename_composition.value == "short":
				filename = strftime("%Y%m%d", localtime(self.begin)) + " - " + name
			elif config.recording.filename_composition.value == "long":
				filename += " - " + name + " - " + self.description
			else:
				filename += " - " + name # standard

		if config.recording.ascii_filenames.value:
			filename = ASCIItranslit.legacyEncode(filename)

		self.Filename = Directories.getRecordingFilename(filename, self.MountPath)
		self.log(0, "Filename calculated as: '%s'" % self.Filename)
		return self.Filename
Exemplo n.º 23
0
    def __init__(self, session, newTimer):
        self.xmlfile = Directories.resolveFilename(
            Directories.SCOPE_PLUGINS,
            "Extensions/AutoTimer/autotimerwizard.xml")

        WizardLanguage.__init__(self,
                                session,
                                showSteps=True,
                                showStepSlider=True)
        AutoTimerEditorBase.__init__(self, newTimer)
        Rc.__init__(self)

        self.skinName = ["AutoTimerWizard", "NetworkWizard"]
        self["wizard"] = Pixmap()
        self["HelpWindow"] = Pixmap()
        self["HelpWindow"].hide()
        self["VKeyIcon"] = Boolean(False)

        self.doCancel = False
        self.emptyMatch = False
        self.tailingWhitespacesMatch = False

        # We might need to change shown items, so add some notifiers
        self.timespan.addNotifier(self.regenTimespanList, initial_call=False)
        self.generateTimespanList()

        self.servicesDlg = self.session.instantiateDialog(
            AutoTimerServiceEditor, self.serviceRestriction, self.services,
            self.bouquets)

        self.filterDlg = self.session.instantiateDialog(
            AutoTimerFilterEditor, self.filterSet, self.excludes,
            self.includes)

        self["TextEntryActions"] = ActionMap(
            ["TextEntryActions"], {
                "deleteForward": self.deleteForward,
                "deleteBackward": self.deleteBackward
            }, -2)
Exemplo n.º 24
0
	def loadTimer(self):
		if not Directories.fileExists(self.Filename):
			return
		try:
			doc = xml.etree.cElementTree.parse(self.Filename)
		except SyntaxError:
			from Tools.Notifications import AddPopup
			from Screens.MessageBox import MessageBox

			AddPopup(_("The timer file (timers.xml) is corrupt and could not be loaded."), type = MessageBox.TYPE_ERROR, timeout = 0, id = "TimerLoadFailed")

			print "timers.xml failed to load!"
			try:
				import os
				os.rename(self.Filename, self.Filename + "_old")
			except (IOError, OSError):
				print "renaming broken timer failed"
			return
		except IOError:
			print "timers.xml not found!"
			return

		root = doc.getroot()

		checkit = False
		timer_text = ""
		for timer in root.findall("timer"):
			newTimer = createTimer(timer)
			conflict_list = self.record(newTimer, ignoreTSC=True, dosave=False, loadtimer=True)
			if conflict_list:
				checkit = True
				if newTimer in conflict_list:
					timer_text += _("\nTimer '%s' disabled!") % newTimer.name
		if checkit:
			from Tools.Notifications import AddPopup
			from Screens.MessageBox import MessageBox
			AddPopup(_("Timer overlap in timers.xml detected!\nPlease recheck it!") + timer_text, type = MessageBox.TYPE_ERROR, timeout = 0, id = "TimerLoadFailed")
Exemplo n.º 25
0
	def loadTimer(self):
		if not Directories.fileExists(self.Filename):
			return
		try:
			doc = xml.etree.cElementTree.parse(self.Filename)
		except SyntaxError:
			from Tools.Notifications import AddPopup
			from Screens.MessageBox import MessageBox

			AddPopup(_("The timer file (timers.xml) is corrupt and could not be loaded."), type = MessageBox.TYPE_ERROR, timeout = 0, id = "TimerLoadFailed")

			print "timers.xml failed to load!"
			try:
				import os
				os.rename(self.Filename, self.Filename + "_old")
			except (IOError, OSError):
				print "renaming broken timer failed"
			return
		except IOError:
			print "timers.xml not found!"
			return

		root = doc.getroot()

		checkit = False
		timer_text = ""
		for timer in root.findall("timer"):
			newTimer = createTimer(timer)
			conflict_list = self.record(newTimer, ignoreTSC=True, dosave=False, loadtimer=True)
			if conflict_list:
				checkit = True
				if newTimer in conflict_list:
					timer_text += _("\nTimer '%s' disabled!") % newTimer.name
		if checkit:
			from Tools.Notifications import AddPopup
			from Screens.MessageBox import MessageBox
			AddPopup(_("Timer overlap in timers.xml detected!\nPlease recheck it!") + timer_text, type = MessageBox.TYPE_ERROR, timeout = 0, id = "TimerLoadFailed")
Exemplo n.º 26
0
	def loadTimer(self):
		# TODO: PATH!
		if not Directories.fileExists(self.Filename):
			return
		try:
			file = open(self.Filename, 'r')
			doc = xml.etree.cElementTree.parse(file)
			file.close()
		except SyntaxError:
			from Tools.Notifications import AddPopup
			from Screens.MessageBox import MessageBox

			AddPopup(_("The timer file (pm_timers.xml) is corrupt and could not be loaded."), type = MessageBox.TYPE_ERROR, timeout = 0, id = "TimerLoadFailed")

			print "pm_timers.xml failed to load!"
			try:
				import os
				os.rename(self.Filename, self.Filename + "_old")
			except (IOError, OSError):
				print "renaming broken timer failed"
			return
		except IOError:
			print "pm_timers.xml not found!"
			return

		root = doc.getroot()

		# put out a message when at least one timer overlaps
		checkit = True
		for timer in root.findall("timer"):
			newTimer = createTimer(timer)
			if (self.record(newTimer, True, dosave=False) is not None) and (checkit == True):
				from Tools.Notifications import AddPopup
				from Screens.MessageBox import MessageBox
				AddPopup(_("Timer overlap in pm_timers.xml detected!\nPlease recheck it!"), type = MessageBox.TYPE_ERROR, timeout = 0, id = "TimerLoadFailed")
				checkit = False # at moment it is enough when the message is displayed one time
Exemplo n.º 27
0
	def createSetup(self, timer):
		# Name
		self.name = NoSave(ConfigText(default = timer.name, fixed_size = False))

		# Match
		self.match = NoSave(ConfigText(default = timer.match, fixed_size = False))

		# Encoding
		default = timer.encoding
		selection = ['UTF-8', 'ISO8859-15']
		if default not in selection:
			selection.append(default)
		self.encoding = NoSave(ConfigSelection(choices = selection, default = default))

		# ...
		self.searchType = NoSave(ConfigSelection(choices = [("partial", _("partial match")), ("exact", _("exact match")), ("start", _("title starts with")), ("description", _("description match"))], default = timer.searchType))
		self.searchCase = NoSave(ConfigSelection(choices = [("sensitive", _("case-sensitive search")), ("insensitive", _("case-insensitive search"))], default = timer.searchCase))

		# Alternatives override
		self.overrideAlternatives = NoSave(ConfigYesNo(default = timer.overrideAlternatives))

		# Justplay
		self.justplay = NoSave(ConfigSelection(choices = [("zap", _("zap")), ("record", _("record"))], default = {0: "record", 1: "zap"}[int(timer.justplay)]))
		self.setEndtime = NoSave(ConfigYesNo(default=timer.setEndtime))

		# Timespan
		now = [x for x in localtime()]
		if timer.hasTimespan():
			default = True
			now[3] = timer.timespan[0][0]
			now[4] = timer.timespan[0][1]
			begin = mktime(now)
			now[3] = timer.timespan[1][0]
			now[4] = timer.timespan[1][1]
			end = mktime(now)
		else:
			default = False
			now[3] = 20
			now[4] = 15
			begin = mktime(now)
			now[3] = 23
			now[4] = 15
			end = mktime(now)
		self.timespan = NoSave(ConfigEnableDisable(default = default))
		self.timespanbegin = NoSave(ConfigClock(default = begin))
		self.timespanend = NoSave(ConfigClock(default = end))

		# Timeframe
		if timer.hasTimeframe():
			default = True
			begin = timer.getTimeframeBegin()
			end = timer.getTimeframeEnd()
		else:
			default = False
			now = [x for x in localtime()]
			now[3] = 0
			now[4] = 0
			begin = mktime(now)
			end = begin + 604800 # today + 7d
		self.timeframe = NoSave(ConfigEnableDisable(default = default))
		self.timeframebegin = NoSave(ConfigDateTime(begin, _("%d.%B %Y"), increment = 86400))
		self.timeframeend = NoSave(ConfigDateTime(end, _("%d.%B %Y"), increment = 86400))

		# Services have their own Screen

		# Offset
		if timer.hasOffset():
			default = True
			begin = timer.getOffsetBegin()
			end = timer.getOffsetEnd()
		else:
			default = False
			begin = 5
			end = 5
		self.offset = NoSave(ConfigEnableDisable(default = default))
		self.offsetbegin = NoSave(ConfigNumber(default = begin))
		self.offsetend = NoSave(ConfigNumber(default = end))

		# AfterEvent
		if timer.hasAfterEvent():
			default = {
				None: "default",
				AFTEREVENT.NONE: "nothing",
				AFTEREVENT.DEEPSTANDBY: "deepstandby",
				AFTEREVENT.STANDBY: "standby",
				AFTEREVENT.AUTO: "auto"
			}[timer.afterevent[0][0]]
		else:
			default = "default"
		self.afterevent = NoSave(ConfigSelection(choices = [
			("default", _("standard")), ("nothing", _("do nothing")),
			("standby", _("go to standby")),
			("deepstandby", _("go to deep standby")),
			("auto", _("auto"))], default = default))

		# AfterEvent (Timespan)
		if timer.hasAfterEvent() and timer.afterevent[0][1][0] is not None:
			default = True
			now[3] = timer.afterevent[0][1][0][0]
			now[4] = timer.afterevent[0][1][0][1]
			begin = mktime(now)
			now[3] = timer.afterevent[0][1][1][0]
			now[4] = timer.afterevent[0][1][1][1]
			end = mktime(now)
		else:
			default = False
			now[3] = 23
			now[4] = 15
			begin = mktime(now)
			now[3] = 7
			now[4] = 0
			end = mktime(now)
		self.afterevent_timespan = NoSave(ConfigEnableDisable(default = default))
		self.afterevent_timespanbegin = NoSave(ConfigClock(default = begin))
		self.afterevent_timespanend = NoSave(ConfigClock(default = end))

		# Enabled
		self.enabled = NoSave(ConfigYesNo(default = timer.enabled))

		# Maxduration
		if timer.hasDuration():
			default = True
			duration = timer.getDuration()
		else:
			default = False
			duration =70
		self.duration = NoSave(ConfigEnableDisable(default = default))
		self.durationlength = NoSave(ConfigNumber(default = duration))

		# Counter
		if timer.hasCounter():
			default = timer.matchCount
		else:
			default = 0
		self.counter = NoSave(ConfigNumber(default = default))
		self.counterLeft = NoSave(ConfigNumber(default = timer.matchLeft))
		default = timer.getCounterFormatString()
		selection = [("", _("Never")), ("%m", _("Monthly")), ("%U", _("Weekly (Sunday)")), ("%W", _("Weekly (Monday)"))]
		if default not in ('', '%m', '%U', '%W'):
			selection.append((default, _("Custom (%s)") % (default)))
		self.counterFormatString = NoSave(ConfigSelection(selection, default = default))

		# Avoid Duplicate Description
		self.avoidDuplicateDescription = NoSave(ConfigSelection([
				("0", _("No")),
				("1", _("On same service")),
				("2", _("On any service")),
				("3", _("Any service/recording")),
			],
			default = str(timer.getAvoidDuplicateDescription())
		))

		# Search for Duplicate Desciption in...
		self.searchForDuplicateDescription = NoSave(ConfigSelection([
				("0", _("Title")),
				("1", _("Title and Short description")),
				("2", _("Title and all descriptions")),
			],
		    default = str(timer.searchForDuplicateDescription)
		))

		# Custom Location
		if timer.hasDestination():
			default = True
		else:
			default = False

		self.useDestination = NoSave(ConfigYesNo(default = default))

		default = timer.destination or Directories.resolveFilename(Directories.SCOPE_HDD)
		choices = config.movielist.videodirs.value

		if default not in choices:
			choices.append(default)
		self.destination = NoSave(ConfigSelection(default = default, choices = choices))

		# Tags
		self.timerentry_tags = timer.tags
		self.tags = NoSave(ConfigSelection(choices = [len(self.timerentry_tags) == 0 and _("None") or ' '.join(self.timerentry_tags)]))

		# Vps
		self.vps_enabled = NoSave(ConfigYesNo(default = timer.vps_enabled))
		self.vps_overwrite = NoSave(ConfigYesNo(default = timer.vps_overwrite))

		# SeriesPlugin
		self.series_labeling = NoSave(ConfigYesNo(default = timer.series_labeling))