aboutsummaryrefslogtreecommitdiff
path: root/lib/python
diff options
context:
space:
mode:
authorFraxinas <andreas.frisch@multimedia-labs.de>2008-11-17 10:04:02 +0100
committerFraxinas <andreas.frisch@multimedia-labs.de>2008-11-17 10:04:02 +0100
commit37b38cb05fc6bc4993f852a78bdba93c7627cf5b (patch)
tree67b0f7159bea05a067626d719ac67d81979d547b /lib/python
parent083c49ace50d1aa702cf47785e0d38966f8e71a1 (diff)
parent153e0ed5048c79c600e1acd085b62015b7314ba7 (diff)
downloadenigma2-37b38cb05fc6bc4993f852a78bdba93c7627cf5b.tar.gz
enigma2-37b38cb05fc6bc4993f852a78bdba93c7627cf5b.zip
Merge branch 'master' of fraxinas@git.opendreambox.org:/git/enigma2
Diffstat (limited to 'lib/python')
-rw-r--r--lib/python/Components/Language.py1
-rw-r--r--lib/python/Components/MovieList.py38
-rw-r--r--lib/python/Components/UsageConfig.py5
-rw-r--r--lib/python/Screens/InputBox.py4
-rw-r--r--lib/python/Screens/LocationBox.py29
-rw-r--r--lib/python/Screens/MovieSelection.py127
-rw-r--r--lib/python/Screens/ScanSetup.py3
-rw-r--r--lib/python/Screens/TimerEntry.py89
8 files changed, 178 insertions, 118 deletions
diff --git a/lib/python/Components/Language.py b/lib/python/Components/Language.py
index acb50e51..6d1e31f3 100644
--- a/lib/python/Components/Language.py
+++ b/lib/python/Components/Language.py
@@ -35,6 +35,7 @@ class Language:
self.addLanguage(_("Spanish"), "es", "ES")
self.addLanguage(_("Swedish"), "sv", "SE")
self.addLanguage(_("Turkish"), "tr", "TR")
+ self.addLanguage(_("Ukrainian"), "uk", "UA")
self.callbacks = []
diff --git a/lib/python/Components/MovieList.py b/lib/python/Components/MovieList.py
index ace36012..8568f3d6 100644
--- a/lib/python/Components/MovieList.py
+++ b/lib/python/Components/MovieList.py
@@ -103,7 +103,8 @@ class MovieList(GUIComponent):
txt = info.getName(serviceref)
service = ServiceReference(info.getInfoString(serviceref, iServiceInformation.sServiceref))
description = info.getInfoString(serviceref, iServiceInformation.sDescription)
-
+ tags = info.getInfoString(serviceref, iServiceInformation.sTags)
+
begin_string = ""
if begin > 0:
t = FuzzyTime(begin)
@@ -111,23 +112,33 @@ class MovieList(GUIComponent):
if self.list_type == MovieList.LISTTYPE_ORIGINAL:
res.append(MultiContentEntryText(pos=(0, 0), size=(width-182, 30), font = 0, flags = RT_HALIGN_LEFT, text=txt))
- if service is not None:
- res.append(MultiContentEntryText(pos=(width-180, 0), size=(180, 30), font = 2, flags = RT_HALIGN_RIGHT, text = service.getServiceName()))
+ if self.tags:
+ res.append(MultiContentEntryText(pos=(width-180, 0), size=(180, 30), font = 2, flags = RT_HALIGN_RIGHT, text = tags))
+ if service is not None:
+ res.append(MultiContentEntryText(pos=(200, 50), size=(200, 20), font = 1, flags = RT_HALIGN_LEFT, text = service.getServiceName()))
+ else:
+ if service is not None:
+ res.append(MultiContentEntryText(pos=(width-180, 0), size=(180, 30), font = 2, flags = RT_HALIGN_RIGHT, text = service.getServiceName()))
res.append(MultiContentEntryText(pos=(0, 30), size=(width, 20), font=1, flags=RT_HALIGN_LEFT, text=description))
- res.append(MultiContentEntryText(pos=(0, 50), size=(width-270, 20), font=1, flags=RT_HALIGN_LEFT, text=begin_string))
- res.append(MultiContentEntryText(pos=(width-200, 50), size=(200, 20), font=1, flags=RT_HALIGN_RIGHT, text=len))
+ res.append(MultiContentEntryText(pos=(0, 50), size=(200, 20), font=1, flags=RT_HALIGN_LEFT, text=begin_string))
+ res.append(MultiContentEntryText(pos=(width-200, 50), size=(198, 20), font=1, flags=RT_HALIGN_RIGHT, text=len))
elif self.list_type == MovieList.LISTTYPE_COMPACT_DESCRIPTION:
res.append(MultiContentEntryText(pos=(0, 0), size=(width-120, 20), font = 0, flags = RT_HALIGN_LEFT, text = txt))
- if service is not None:
- res.append(MultiContentEntryText(pos=(width-212, 20), size=(154, 17), font = 1, flags = RT_HALIGN_RIGHT, text = service.getServiceName()))
res.append(MultiContentEntryText(pos=(0, 20), size=(width-212, 17), font=1, flags=RT_HALIGN_LEFT, text=description))
res.append(MultiContentEntryText(pos=(width-120, 6), size=(120, 20), font=1, flags=RT_HALIGN_RIGHT, text=begin_string))
+ if service is not None:
+ res.append(MultiContentEntryText(pos=(width-212, 20), size=(154, 17), font = 1, flags = RT_HALIGN_RIGHT, text = service.getServiceName()))
res.append(MultiContentEntryText(pos=(width-58, 20), size=(58, 20), font=1, flags=RT_HALIGN_RIGHT, text=len))
elif self.list_type == MovieList.LISTTYPE_COMPACT:
res.append(MultiContentEntryText(pos=(0, 0), size=(width-77, 20), font = 0, flags = RT_HALIGN_LEFT, text = txt))
- if service is not None:
- res.append(MultiContentEntryText(pos=(width-200, 20), size=(200, 17), font = 1, flags = RT_HALIGN_RIGHT, text = service.getServiceName()))
- res.append(MultiContentEntryText(pos=(0, 20), size=(width-200, 17), font=1, flags=RT_HALIGN_LEFT, text=begin_string))
+ if self.tags:
+ res.append(MultiContentEntryText(pos=(width-200, 20), size=(200, 17), font = 1, flags = RT_HALIGN_RIGHT, text = tags))
+ if service is not None:
+ res.append(MultiContentEntryText(pos=(200, 20), size=(200, 17), font = 1, flags = RT_HALIGN_LEFT, text = service.getServiceName()))
+ else:
+ if service is not None:
+ res.append(MultiContentEntryText(pos=(width-200, 20), size=(200, 17), font = 1, flags = RT_HALIGN_RIGHT, text = service.getServiceName()))
+ res.append(MultiContentEntryText(pos=(0, 20), size=(200, 17), font=1, flags=RT_HALIGN_LEFT, text=begin_string))
res.append(MultiContentEntryText(pos=(width-75, 0), size=(75, 20), font=0, flags=RT_HALIGN_RIGHT, text=len))
else:
assert(self.list_type == MovieList.LISTTYPE_MINIMAL)
@@ -212,6 +223,7 @@ class MovieList(GUIComponent):
if this_tags == ['']:
this_tags = []
this_tags = set(this_tags)
+ tags |= this_tags
# filter_tags is either None (which means no filter at all), or
# a set. In this case, all elements of filter_tags must be present,
@@ -219,7 +231,6 @@ class MovieList(GUIComponent):
if filter_tags is not None and not this_tags.issuperset(filter_tags):
continue
- tags |= this_tags
self.list.append((serviceref, info, begin, -1))
if self.sort_type == MovieList.SORT_ALPHANUMERIC:
@@ -243,8 +254,9 @@ class MovieList(GUIComponent):
for x in self.list:
if x[0] == serviceref:
self.instance.moveSelectionTo(count)
- break
+ return True
count += 1
-
+ return False
+
def moveDown(self):
self.instance.moveSelection(self.instance.moveDown)
diff --git a/lib/python/Components/UsageConfig.py b/lib/python/Components/UsageConfig.py
index 714d366d..6ed87840 100644
--- a/lib/python/Components/UsageConfig.py
+++ b/lib/python/Components/UsageConfig.py
@@ -1,5 +1,5 @@
from Components.Harddisk import harddiskmanager
-from config import ConfigSubsection, ConfigYesNo, config, ConfigSelection, ConfigText, ConfigNumber, ConfigSet
+from config import ConfigSubsection, ConfigYesNo, config, ConfigSelection, ConfigText, ConfigNumber, ConfigSet, ConfigLocations
from enigma import Misc_Options, setTunerTypePriorityOrder;
from SystemInfo import SystemInfo
import os
@@ -30,6 +30,9 @@ def InitUsageConfig():
("standard", _("standard")), ("swap", _("swap PiP and main picture")),
("swapstop", _("move PiP to main picture")), ("stop", _("stop PiP")) ])
+ config.usage.allowed_timeshift_paths = ConfigLocations(default = ["/media/hdd/"])
+ config.usage.timeshift_path = ConfigText(default = "/media/hdd")
+
config.usage.on_movie_start = ConfigSelection(default = "ask", choices = [
("ask", _("Ask user")), ("resume", _("Resume from last position")), ("beginning", _("Start from the beginning")) ])
config.usage.on_movie_stop = ConfigSelection(default = "ask", choices = [
diff --git a/lib/python/Screens/InputBox.py b/lib/python/Screens/InputBox.py
index 43b8a8b8..61ce356a 100644
--- a/lib/python/Screens/InputBox.py
+++ b/lib/python/Screens/InputBox.py
@@ -8,12 +8,14 @@ from Tools.BoundFunction import boundFunction
from time import time
class InputBox(Screen):
- def __init__(self, session, title = "", windowTitle = _("Input"), **kwargs):
+ def __init__(self, session, title = "", windowTitle = _("Input"), useableChars = None, **kwargs):
Screen.__init__(self, session)
self["text"] = Label(title)
self["input"] = Input(**kwargs)
self.onShown.append(boundFunction(self.setTitle, windowTitle))
+ if useableChars is not None:
+ self["input"].setUseableChars(useableChars)
self["actions"] = NumberActionMap(["WizardActions", "InputBoxActions", "InputAsciiActions", "KeyboardInputActions"],
{
diff --git a/lib/python/Screens/LocationBox.py b/lib/python/Screens/LocationBox.py
index 7cd6cbf9..68d4f772 100644
--- a/lib/python/Screens/LocationBox.py
+++ b/lib/python/Screens/LocationBox.py
@@ -503,3 +503,32 @@ class MovieLocationBox(LocationBox):
def __init__(self, session, text, dir, minFree = None):
inhibitDirs = ["/bin", "/boot", "/dev", "/etc", "/lib", "/proc", "/sbin", "/sys", "/usr", "/var"]
LocationBox.__init__(self, session, text = text, currDir = dir, bookmarks = config.movielist.videodirs, autoAdd = True, editDir = True, inhibitDirs = inhibitDirs, minFree = minFree)
+
+class TimeshiftLocationBox(LocationBox):
+
+ skinName = "LocationBox" # XXX: though we could use a custom skin or inherit the hardcoded one we stick with the original :-)
+
+ def __init__(self, session):
+ inhibitDirs = ["/bin", "/boot", "/dev", "/etc", "/lib", "/proc", "/sbin", "/sys", "/usr", "/var"]
+ LocationBox.__init__(
+ self,
+ session,
+ text = _("Where to save temporary timeshift recordings?"),
+ currDir = config.usage.timeshift_path.value,
+ bookmarks = config.usage.allowed_timeshift_paths,
+ autoAdd = True,
+ editDir = True,
+ inhibitDirs = inhibitDirs,
+ minFree = 1024 # XXX: the same requirement is hardcoded in servicedvb.cpp
+ )
+
+ def cancel(self):
+ config.usage.timeshift_path.cancel()
+ LocationBox.cancel(self)
+
+ def selectConfirmed(self, ret):
+ if ret:
+ config.usage.timeshift_path.value = self.getPreferredFolder()
+ config.usage.timeshift_path.save()
+ LocationBox.selectConfirmed(self, ret)
+
diff --git a/lib/python/Screens/MovieSelection.py b/lib/python/Screens/MovieSelection.py
index c05f145f..5951653f 100644
--- a/lib/python/Screens/MovieSelection.py
+++ b/lib/python/Screens/MovieSelection.py
@@ -29,6 +29,28 @@ config.movielist.description = ConfigInteger(default=MovieList.HIDE_DESCRIPTION)
config.movielist.last_videodir = ConfigText(default=resolveFilename(SCOPE_HDD))
config.movielist.last_timer_videodir = ConfigText(default=resolveFilename(SCOPE_HDD))
config.movielist.videodirs = ConfigLocations(default=[resolveFilename(SCOPE_HDD)])
+config.movielist.first_tags = ConfigText(default="")
+config.movielist.second_tags = ConfigText(default="")
+
+
+def setPreferredTagEditor(te):
+ global preferredTagEditor
+ try:
+ if preferredTagEditor == None:
+ preferredTagEditor = te
+ print "Preferred tag editor changed to ", preferredTagEditor
+ else:
+ print "Preferred tag editor already set to ", preferredTagEditor
+ print "ignoring ", te
+ except:
+ preferredTagEditor = te
+ print "Preferred tag editor set to ", preferredTagEditor
+
+def getPreferredTagEditor():
+ global preferredTagEditor
+ return preferredTagEditor
+
+setPreferredTagEditor(None)
class MovieContextMenu(Screen):
def __init__(self, session, csel, service):
@@ -71,10 +93,8 @@ class MovieContextMenu(Screen):
def sortBy(self, newType):
config.movielist.moviesort.value = newType
- self.csel.selectedmovie = self.csel.getCurrent()
self.csel.setSortType(newType)
self.csel.reloadList()
- self.csel.moveTo()
self.close()
def listType(self, newType):
@@ -123,7 +143,7 @@ class MovieContextMenu(Screen):
self.session.openWithCallback(self.close, MessageBox, _("Delete failed!"), MessageBox.TYPE_ERROR)
else:
self.csel["list"].removeService(self.service)
- self.csel["freeDiskSpace"].update()
+ self.csel["freeDiskSpace"].update()
self.close()
class SelectionEventInfo:
@@ -149,6 +169,7 @@ class MovieSelection(Screen, HelpableScreen, SelectionEventInfo):
self.tags = [ ]
self.selected_tags = None
+ self.selected_tags_ele = None
self.movemode = False
self.bouquet_mark_edit = False
@@ -178,7 +199,7 @@ class MovieSelection(Screen, HelpableScreen, SelectionEventInfo):
# Need list for init
SelectionEventInfo.__init__(self)
- self["key_red"] = Button(_("All..."))
+ self["key_red"] = Button(_("All"))
self["key_green"] = Button("")
self["key_yellow"] = Button("")
self["key_blue"] = Button("")
@@ -201,9 +222,9 @@ class MovieSelection(Screen, HelpableScreen, SelectionEventInfo):
self["ColorActions"] = HelpableActionMap(self, "ColorActions",
{
"red": (self.showAll, _("show all")),
- "green": (self.showTagsFirst, _("show first tag")),
- "yellow": (self.showTagsSecond, _("show second tag")),
- "blue": (self.showTagsMenu, _("show tag menu")),
+ "green": (self.showTagsFirst, _("show first selected tag")),
+ "yellow": (self.showTagsSecond, _("show second selected tag")),
+ "blue": (self.showTagsSelect, _("show tag menu")),
})
self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions",
@@ -246,11 +267,8 @@ class MovieSelection(Screen, HelpableScreen, SelectionEventInfo):
self.updateDescription()
def updateHDDData(self):
- self.reloadList()
- if self.selectedmovie is not None:
- self.moveTo()
+ self.reloadList(self.selectedmovie)
self["waitingtext"].visible = False
- self.updateTags()
def moveTo(self):
self["list"].moveTo(self.selectedmovie)
@@ -285,26 +303,29 @@ class MovieSelection(Screen, HelpableScreen, SelectionEventInfo):
def updateTags(self):
# get a list of tags available in this list
self.tags = list(self["list"].tags)
-
- # by default, we do not display any filtering options
- self.tag_first = ""
- self.tag_second = ""
-
- # when tags are present, however, the first two are
- # directly mapped to the second, third ("green", "yellow") buttons
- if len(self.tags) > 0:
- self.tag_first = self.getTagDescription(self.tags[0])
-
- if len(self.tags) > 1:
- self.tag_second = self.getTagDescription(self.tags[1])
-
+
+ if not self.tags:
+ # by default, we do not display any filtering options
+ self.tag_first = ""
+ self.tag_second = ""
+ else:
+ tmp = config.movielist.first_tags.value
+ if tmp in self.tags:
+ self.tag_first = tmp
+ else:
+ self.tag_first = "<"+_("Tag 1")+">"
+ tmp = config.movielist.second_tags.value
+ if tmp in self.tags:
+ self.tag_second = tmp
+ else:
+ self.tag_second = "<"+_("Tag 2")+">"
self["key_green"].text = self.tag_first
self["key_yellow"].text = self.tag_second
# the rest is presented in a list, available on the
# fourth ("blue") button
- if len(self.tags) > 2:
- self["key_blue"].text = _("Other...")
+ if self.tags:
+ self["key_blue"].text = _("Tags")+"..."
else:
self["key_blue"].text = ""
@@ -317,20 +338,26 @@ class MovieSelection(Screen, HelpableScreen, SelectionEventInfo):
def setSortType(self, type):
self["list"].setSortType(type)
- def reloadList(self):
+ def reloadList(self, sel = None, home = False):
if not pathExists(config.movielist.last_videodir.value):
path = resolveFilename(SCOPE_HDD)
config.movielist.last_videodir.value = path
config.movielist.last_videodir.save()
self.current_ref = eServiceReference("2:0:1:0:0:0:0:0:0:0:" + path)
self["freeDiskSpace"].path = path
+ if sel is None:
+ sel = self.getCurrent()
self["list"].reload(self.current_ref, self.selected_tags)
title = _("Recorded files...")
- if self.selected_tags is not None:
- title += " - " + ','.join(self.selected_tags)
if config.usage.setup_level.index >= 2: # expert+
title += " " + config.movielist.last_videodir.value
+ if self.selected_tags is not None:
+ title += " - " + ','.join(self.selected_tags)
self.setTitle(title)
+ if not (sel and self["list"].moveTo(sel)):
+ if home:
+ self["list"].moveToIndex(0)
+ self.updateTags()
self["freeDiskSpace"].update()
def doPathSelect(self):
@@ -348,7 +375,7 @@ class MovieSelection(Screen, HelpableScreen, SelectionEventInfo):
config.movielist.last_videodir.save()
self.current_ref = eServiceReference("2:0:1:0:0:0:0:0:0:0:" + res)
self["freeDiskSpace"].path = res
- self.reloadList()
+ self.reloadList(home = True)
else:
self.session.open(
MessageBox,
@@ -358,35 +385,41 @@ class MovieSelection(Screen, HelpableScreen, SelectionEventInfo):
)
def showAll(self):
+ self.selected_tags_ele = None
self.selected_tags = None
- self.reloadList()
+ self.reloadList(home = True)
- def showTagsN(self, n):
- if len(self.tags) < n:
+ def showTagsN(self, tagele):
+ if not self.tags:
self.showTagWarning()
+ elif not tagele or self.selected_tags_ele == tagele or not tagele.value in self.tags:
+ self.showTagsMenu(tagele)
else:
- print "select tag #%d, %s, %s" % (n, self.tags[n - 1], ','.join(self.tags))
- self.selected_tags = set([self.tags[n - 1]])
- self.reloadList()
+ self.selected_tags_ele = tagele
+ self.selected_tags = set([tagele.value])
+ self.reloadList(home = True)
def showTagsFirst(self):
- self.showTagsN(1)
+ self.showTagsN(config.movielist.first_tags)
def showTagsSecond(self):
- self.showTagsN(2)
+ self.showTagsN(config.movielist.second_tags)
+
+ def showTagsSelect(self):
+ self.showTagsN(None)
def tagChosen(self, tag):
if tag is not None:
self.selected_tags = set([tag[0]])
- self.reloadList()
+ if self.selected_tags_ele:
+ self.selected_tags_ele.value = tag[0]
+ self.selected_tags_ele.save()
+ self.reloadList(home = True)
- def showTagsMenu(self):
- if len(self.tags) < 3:
- self.showTagWarning()
- else:
- list = [(tag, self.getTagDescription(tag)) for tag in self.tags ]
- self.session.openWithCallback(self.tagChosen, ChoiceBox, title=_("Please select keyword to filter..."), list = list)
+ def showTagsMenu(self, tagele):
+ self.selected_tags_ele = tagele
+ list = [(tag, self.getTagDescription(tag)) for tag in self.tags ]
+ self.session.openWithCallback(self.tagChosen, ChoiceBox, title=_("Please select tag to filter..."), list = list)
def showTagWarning(self):
- # TODO
- self.session.open(MessageBox, _("You need to define some keywords first!\nPress the menu-key to define keywords.\nDo you want to define keywords now?"), MessageBox.TYPE_ERROR)
+ self.session.open(MessageBox, _("No tags are set on these movies."), MessageBox.TYPE_ERROR)
diff --git a/lib/python/Screens/ScanSetup.py b/lib/python/Screens/ScanSetup.py
index ab110a24..608dcb2d 100644
--- a/lib/python/Screens/ScanSetup.py
+++ b/lib/python/Screens/ScanSetup.py
@@ -394,8 +394,7 @@ class ScanSetup(ConfigListScreen, Screen, CableTransponderSearchSupport):
self.modulationEntry = getConfigListEntry(_('Modulation'), self.scan_sat.modulation)
self.list.append(self.modulationEntry)
self.list.append(getConfigListEntry(_('Rolloff'), self.scan_sat.rolloff))
- if self.scan_sat.modulation.value == "8psk":
- self.list.append(getConfigListEntry(_('Pilot'), self.scan_sat.pilot))
+ self.list.append(getConfigListEntry(_('Pilot'), self.scan_sat.pilot))
elif self.scan_type.value == "single_satellite":
self.updateSatList()
print self.scan_satselection[index_to_scan]
diff --git a/lib/python/Screens/TimerEntry.py b/lib/python/Screens/TimerEntry.py
index c4dfff72..1774061d 100644
--- a/lib/python/Screens/TimerEntry.py
+++ b/lib/python/Screens/TimerEntry.py
@@ -8,6 +8,7 @@ from Components.MenuList import MenuList
from Components.Button import Button
from Components.Label import Label
from Components.Pixmap import Pixmap
+from Screens.MovieSelection import getPreferredTagEditor
from Screens.LocationBox import MovieLocationBox
from Screens.ChoiceBox import ChoiceBox
from RecordTimer import AFTEREVENT
@@ -21,8 +22,7 @@ class TimerEntry(Screen, ConfigListScreen):
Screen.__init__(self, session)
self.timer = timer
- self.entryStartDate = None
- self.entryEndDate = None
+ self.entryDate = None
self.entryService = None
self["oktext"] = Label(_("OK"))
@@ -88,13 +88,13 @@ class TimerEntry(Screen, ConfigListScreen):
self.timerentry_type = ConfigSelection(choices = [("once",_("once")), ("repeated", _("repeated"))], default = type)
self.timerentry_name = ConfigText(default = self.timer.name, visible_width = 50, fixed_size = False)
self.timerentry_description = ConfigText(default = self.timer.description, visible_width = 50, fixed_size = False)
+ self.timerentry_tags = self.timer.tags + []
+ self.timerentry_tagsset = ConfigSelection(choices = [len(self.timerentry_tags) == 0 and "None" or " ".join(self.timerentry_tags)])
self.timerentry_repeated = ConfigSelection(default = repeated, choices = [("daily", _("daily")), ("weekly", _("weekly")), ("weekdays", _("Mon-Fri")), ("user", _("user defined"))])
- self.timerentry_startdate = ConfigDateTime(default = self.timer.begin, formatstring = _("%d.%B %Y"), increment = 86400)
+ self.timerentry_date = ConfigDateTime(default = self.timer.begin, formatstring = _("%d.%B %Y"), increment = 86400)
self.timerentry_starttime = ConfigClock(default = self.timer.begin)
-
- self.timerentry_enddate = ConfigDateTime(default = self.timer.end, formatstring = _("%d.%B %Y"), increment = 86400)
self.timerentry_endtime = ConfigClock(default = self.timer.end)
default = self.timer.dirname or resolveFilename(SCOPE_HDD)
@@ -120,19 +120,6 @@ class TimerEntry(Screen, ConfigListScreen):
self.timerentry_service_ref = self.timer.service_ref
self.timerentry_service = ConfigSelection([servicename])
- self.timerentry_startdate.addNotifier(self.checkDate)
- self.timerentry_enddate.addNotifier(self.checkDate)
-
- def checkDate(self, configElement):
- if configElement is self.timerentry_startdate:
- if self.timerentry_enddate.value < self.timerentry_startdate.value:
- self.timerentry_enddate.value = self.timerentry_startdate.value
- self["config"].invalidate(self.entryEndDate)
- if configElement is self.timerentry_enddate:
- if (self.timerentry_enddate.value < self.timerentry_startdate.value):
- self.timerentry_startdate.value = self.timerentry_enddate.value
- self["config"].invalidate(self.entryStartDate)
-
def createSetup(self, widget):
self.list = []
self.list.append(getConfigListEntry(_("Name"), self.timerentry_name))
@@ -165,34 +152,24 @@ class TimerEntry(Screen, ConfigListScreen):
self.list.append(getConfigListEntry(_("Saturday"), self.timerentry_day[5]))
self.list.append(getConfigListEntry(_("Sunday"), self.timerentry_day[6]))
- #self.list.append(getConfigListEntry("StartDate", self.timerentry_startdate))
-# self.list.append(getConfigListEntry("Weekday", self.timerentry_weekday))
-
- self.entryStartDate = getConfigListEntry(_("Start"), self.timerentry_startdate)
- if self.timerentry_type.value == "once":
- self.list.append(self.entryStartDate)
- self.list.append(getConfigListEntry(" ", self.timerentry_starttime))
- else:
- self.list.append(getConfigListEntry(_("StartTime"), self.timerentry_starttime))
-
- self.entryEndDate = getConfigListEntry(_("End"), self.timerentry_enddate)
+ self.entryDate = getConfigListEntry(_("Date"), self.timerentry_date)
if self.timerentry_type.value == "once":
- if self.timerentry_justplay.value != "zap":
- self.list.append(self.entryEndDate)
- self.list.append(getConfigListEntry(" ", self.timerentry_endtime))
- else:
- if self.timerentry_justplay.value != "zap":
- self.list.append(getConfigListEntry(_("EndTime"), self.timerentry_endtime))
+ self.list.append(self.entryDate)
+ self.list.append(getConfigListEntry(_("StartTime"), self.timerentry_starttime))
+ if self.timerentry_justplay.value != "zap":
+ self.list.append(getConfigListEntry(_("EndTime"), self.timerentry_endtime))
+ self.channelEntry = getConfigListEntry(_("Channel"), self.timerentry_service)
+ self.list.append(self.channelEntry)
+ self.dirname = getConfigListEntry(_("Location"), self.timerentry_dirname)
+ self.tagsSet = getConfigListEntry(_("Tags"), self.timerentry_tagsset)
if self.timerentry_justplay.value != "zap":
if config.usage.setup_level.index >= 2: # expert+
- self.dirname = getConfigListEntry(_("Location"), self.timerentry_dirname)
self.list.append(self.dirname)
+ if getPreferredTagEditor():
+ self.list.append(self.tagsSet)
self.list.append(getConfigListEntry(_("After event"), self.timerentry_afterevent))
- self.channelEntry = getConfigListEntry(_("Channel"), self.timerentry_service)
- self.list.append(self.channelEntry)
-
self[widget].list = self.list
self[widget].l.setList(self.list)
@@ -206,14 +183,14 @@ class TimerEntry(Screen, ConfigListScreen):
self.createSetup("config")
def keyLeft(self):
- if self["config"].getCurrent() is self.channelEntry:
+ if self["config"].getCurrent() in [self.channelEntry, self.tagsSet]:
self.keySelect()
else:
ConfigListScreen.keyLeft(self)
self.newConfig()
def keyRight(self):
- if self["config"].getCurrent() is self.channelEntry:
+ if self["config"].getCurrent() in [self.channelEntry, self.tagsSet]:
self.keySelect()
else:
ConfigListScreen.keyRight(self)
@@ -235,6 +212,12 @@ class TimerEntry(Screen, ConfigListScreen):
self.timerentry_dirname.value,
minFree = 100 # We require at least 100MB free space
)
+ elif getPreferredTagEditor() and cur == self.tagsSet:
+ self.session.openWithCallback(
+ self.tagEditFinished,
+ getPreferredTagEditor(),
+ self.timerentry_tags
+ )
else:
self.keyGo()
@@ -249,24 +232,15 @@ class TimerEntry(Screen, ConfigListScreen):
dt = datetime(d.tm_year, d.tm_mon, d.tm_mday, mytime[0], mytime[1])
return int(mktime(dt.timetuple()))
- def buildRepeatedBegin(self, rep_time, start_time):
- d = localtime(rep_time)
- dt = datetime(d.tm_year, d.tm_mon, d.tm_mday, start_time[0], start_time[1])
- return int(mktime(dt.timetuple()))
-
def getBeginEnd(self):
- enddate = self.timerentry_enddate.value
+ date = self.timerentry_date.value
endtime = self.timerentry_endtime.value
-
- startdate = self.timerentry_startdate.value
starttime = self.timerentry_starttime.value
- begin = self.getTimestamp(startdate, starttime)
- end = self.getTimestamp(enddate, endtime)
+ begin = self.getTimestamp(date, starttime)
+ end = self.getTimestamp(date, endtime)
- # because of the dateChecks, startdate can't be < enddate.
- # however, the endtime can be less than the starttime.
- # in this case, add 1 day.
+ # if the endtime is less than the starttime, add 1 day.
if end < begin:
end += 86400
return begin, end
@@ -278,6 +252,7 @@ class TimerEntry(Screen, ConfigListScreen):
self.timer.resetRepeated()
self.timer.afterEvent = {"nothing": AFTEREVENT.NONE, "deepstandby": AFTEREVENT.DEEPSTANDBY, "standby": AFTEREVENT.STANDBY}[self.timerentry_afterevent.value]
self.timer.service_ref = self.timerentry_service_ref
+ self.timer.tags = self.timerentry_tags
self.timer.dirname = self.timerentry_dirname.value
config.movielist.last_timer_videodir.value = self.timer.dirname
@@ -352,6 +327,12 @@ class TimerEntry(Screen, ConfigListScreen):
self.timerentry_dirname.setChoices(config.movielist.videodirs.value, default=res)
self.timerentry_dirname.value = res
+ def tagEditFinished(self, ret):
+ if ret is not None:
+ self.timerentry_tags = ret
+ self.timerentry_tagsset.setChoices([len(ret) == 0 and "None" or " ".join(ret)])
+ self["config"].invalidate(self.tagsSet)
+
class TimerLog(Screen):
def __init__(self, session, timer):
Screen.__init__(self, session)