diff options
| author | Felix Domke <felix.domke@multimedia-labs.de> | 2009-10-29 01:54:31 +0100 |
|---|---|---|
| committer | Felix Domke <felix.domke@multimedia-labs.de> | 2009-10-29 01:54:31 +0100 |
| commit | 7560beb3e371704d798259ca1ea927bf4575306c (patch) | |
| tree | 3aa3341dbf843e064dbf0179b81ee3dca0c36a3b /lib/python/Screens | |
| parent | dafa266c71fd625cd5a9bedbea10a47e27c868ad (diff) | |
| download | enigma2-7560beb3e371704d798259ca1ea927bf4575306c.tar.gz enigma2-7560beb3e371704d798259ca1ea927bf4575306c.zip | |
By Anders Holst:
At regular intervalls there are questions in the forum (in at least
three or four different threads on only this subject) on how to
configure the recording paths so you don't have to set them to the
same thing over and over again in e.g EPG timers. People apparently
forget to set it, and miss their recordings because the harddisk is
full or not built in. They want an easy way to change the default from
/hdd/movies/ to a NAS or a USB device.
I have rebased the patch in this thread from March 23, added two minor
bugfixes, and hopefully made it less controversial by making sure that
it only affects the expert setup level. I don't think there should be
anything controversial about this patch now, and no known bugs. It
only provides functionality that several people are screaming to get.
Synopsis: The patch changes the "Timeshift path..." setup dialogue
into a "Recording paths..." dialogue where you can easily configure
both the timeshift and the other recording paths.
Diffstat (limited to 'lib/python/Screens')
| -rw-r--r-- | lib/python/Screens/EpgSelection.py | 3 | ||||
| -rw-r--r-- | lib/python/Screens/EventView.py | 3 | ||||
| -rw-r--r-- | lib/python/Screens/InfoBar.py | 1 | ||||
| -rw-r--r-- | lib/python/Screens/InfoBarGenerics.py | 11 | ||||
| -rw-r--r-- | lib/python/Screens/LocationBox.py | 5 | ||||
| -rw-r--r-- | lib/python/Screens/MovieSelection.py | 22 | ||||
| -rw-r--r-- | lib/python/Screens/TimerEdit.py | 3 | ||||
| -rw-r--r-- | lib/python/Screens/TimerEntry.py | 11 |
8 files changed, 37 insertions, 22 deletions
diff --git a/lib/python/Screens/EpgSelection.py b/lib/python/Screens/EpgSelection.py index 3dde7e22..f8edba11 100644 --- a/lib/python/Screens/EpgSelection.py +++ b/lib/python/Screens/EpgSelection.py @@ -6,6 +6,7 @@ from Components.Label import Label from Components.EpgList import EPGList, EPG_TYPE_SINGLE, EPG_TYPE_SIMILAR, EPG_TYPE_MULTI from Components.ActionMap import ActionMap from Components.TimerSanityCheck import TimerSanityCheck +from Components.UsageConfig import preferredTimerPath from Components.Sources.ServiceEvent import ServiceEvent from Components.Sources.Event import Event from Screens.TimerEdit import TimerSanityConflict @@ -235,7 +236,7 @@ class EPGSelection(Screen): self.session.openWithCallback(cb_func, MessageBox, _("Do you really want to delete %s?") % event.getEventName()) break else: - newEntry = RecordTimerEntry(serviceref, checkOldTimers = True, *parseEvent(event)) + newEntry = RecordTimerEntry(serviceref, checkOldTimers = True, dirname = preferredTimerPath(), *parseEvent(event)) self.session.openWithCallback(self.finishedAdd, TimerEntry, newEntry) def finishedAdd(self, answer): diff --git a/lib/python/Screens/EventView.py b/lib/python/Screens/EventView.py index c1ffb585..cced3ceb 100644 --- a/lib/python/Screens/EventView.py +++ b/lib/python/Screens/EventView.py @@ -6,6 +6,7 @@ from Components.Button import Button from Components.Label import Label from Components.ScrollLabel import ScrollLabel from Components.TimerList import TimerList +from Components.UsageConfig import preferredTimerPath from enigma import eEPGCache, eTimer, eServiceReference from RecordTimer import RecordTimerEntry, parseEvent, AFTEREVENT from TimerEntry import TimerEntry @@ -85,7 +86,7 @@ class EventViewBase: self.session.openWithCallback(cb_func, MessageBox, _("Do you really want to delete %s?") % event.getEventName()) break else: - newEntry = RecordTimerEntry(self.currentService, checkOldTimers = True, *parseEvent(self.event)) + newEntry = RecordTimerEntry(self.currentService, checkOldTimers = True, dirname = preferredTimerPath(), *parseEvent(self.event)) self.session.openWithCallback(self.finishedAdd, TimerEntry, newEntry) def finishedAdd(self, answer): diff --git a/lib/python/Screens/InfoBar.py b/lib/python/Screens/InfoBar.py index d65eace8..be1407d3 100644 --- a/lib/python/Screens/InfoBar.py +++ b/lib/python/Screens/InfoBar.py @@ -212,7 +212,6 @@ class MoviePlayer(InfoBarBase, InfoBarShowHide, \ return if answer in ("quit", "quitanddeleteconfirmed"): - config.movielist.last_videodir.cancel() self.close() elif answer == "movielist": ref = self.session.nav.getCurrentlyPlayingServiceReference() diff --git a/lib/python/Screens/InfoBarGenerics.py b/lib/python/Screens/InfoBarGenerics.py index 2f830616..b27df9d3 100644 --- a/lib/python/Screens/InfoBarGenerics.py +++ b/lib/python/Screens/InfoBarGenerics.py @@ -10,6 +10,7 @@ from Components.ServiceEventTracker import ServiceEventTracker from Components.Sources.Boolean import Boolean from Components.config import config, ConfigBoolean, ConfigClock from Components.SystemInfo import SystemInfo +from Components.UsageConfig import preferredInstantRecordPath, defaultMoviePath from EpgSelection import EPGSelection from Plugins.Plugin import PluginDescriptor @@ -29,7 +30,7 @@ from Screens.TimeDateInput import TimeDateInput from ServiceReference import ServiceReference from Tools import Notifications -from Tools.Directories import SCOPE_HDD, resolveFilename, fileExists +from Tools.Directories import fileExists from enigma import eTimer, eServiceCenter, eDVBServicePMTHandler, iServiceInformation, \ iPlayableService, eServiceReference, eEPGCache @@ -1496,7 +1497,7 @@ class InfoBarInstantRecord: if isinstance(serviceref, eServiceReference): serviceref = ServiceReference(serviceref) - recording = RecordTimerEntry(serviceref, begin, end, name, description, eventid, dirname = config.movielist.last_videodir.value) + recording = RecordTimerEntry(serviceref, begin, end, name, description, eventid, dirname = preferredInstantRecordPath()) recording.dontSave = True if event is None or limitEvent == False: @@ -1597,9 +1598,9 @@ class InfoBarInstantRecord: self.session.nav.RecordTimer.timeChanged(entry) def instantRecord(self): - dir = config.movielist.last_videodir.value - if not fileExists(dir, 'w'): - dir = resolveFilename(SCOPE_HDD) + dir = preferredInstantRecordPath() + if not dir or not fileExists(dir, 'w'): + dir = defaultMoviePath() try: stat = os_stat(dir) except: diff --git a/lib/python/Screens/LocationBox.py b/lib/python/Screens/LocationBox.py index 61d7105d..29d94f55 100644 --- a/lib/python/Screens/LocationBox.py +++ b/lib/python/Screens/LocationBox.py @@ -289,6 +289,11 @@ class LocationBox(Screen, NumericalTextInput, HelpableScreen): 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() def up(self): self[self.currList].up() diff --git a/lib/python/Screens/MovieSelection.py b/lib/python/Screens/MovieSelection.py index 174a4f07..15f6b465 100644 --- a/lib/python/Screens/MovieSelection.py +++ b/lib/python/Screens/MovieSelection.py @@ -7,8 +7,9 @@ from Components.DiskInfo import DiskInfo from Components.Pixmap import Pixmap from Components.Label import Label from Components.PluginComponent import plugins -from Components.config import config, ConfigSubsection, ConfigText, ConfigInteger, ConfigLocations +from Components.config import config, ConfigSubsection, ConfigText, ConfigInteger, ConfigLocations, ConfigSet from Components.Sources.ServiceEvent import ServiceEvent +from Components.UsageConfig import defaultMoviePath from Plugins.Plugin import PluginDescriptor @@ -31,6 +32,7 @@ config.movielist.last_timer_videodir = ConfigText(default=resolveFilename(SCOPE_ config.movielist.videodirs = ConfigLocations(default=[resolveFilename(SCOPE_HDD)]) config.movielist.first_tags = ConfigText(default="") config.movielist.second_tags = ConfigText(default="") +config.movielist.last_selected_tags = ConfigSet([], default=[]) def setPreferredTagEditor(te): @@ -168,7 +170,10 @@ class MovieSelection(Screen, HelpableScreen, SelectionEventInfo): HelpableScreen.__init__(self) self.tags = [ ] - self.selected_tags = None + if selectedmovie: + self.selected_tags = config.movielist.last_selected_tags.value + else: + self.selected_tags = None self.selected_tags_ele = None self.movemode = False @@ -183,8 +188,8 @@ class MovieSelection(Screen, HelpableScreen, SelectionEventInfo): self["DescriptionBorder"] = Pixmap() self["DescriptionBorder"].hide() - if not pathExists(config.movielist.last_videodir.value): - config.movielist.last_videodir.value = resolveFilename(SCOPE_HDD) + if not fileExists(config.movielist.last_videodir.value): + config.movielist.last_videodir.value = defaultMoviePath() config.movielist.last_videodir.save() self.current_ref = eServiceReference("2:0:1:0:0:0:0:0:0:0:" + config.movielist.last_videodir.value) @@ -292,6 +297,7 @@ class MovieSelection(Screen, HelpableScreen, SelectionEventInfo): self.close(None) def saveconfig(self): + config.movielist.last_selected_tags.value = self.selected_tags config.movielist.moviesort.save() config.movielist.listtype.save() config.movielist.description.save() @@ -339,8 +345,8 @@ class MovieSelection(Screen, HelpableScreen, SelectionEventInfo): self["list"].setSortType(type) def reloadList(self, sel = None, home = False): - if not pathExists(config.movielist.last_videodir.value): - path = resolveFilename(SCOPE_HDD) + if not fileExists(config.movielist.last_videodir.value): + path = defaultMoviePath() 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) @@ -370,7 +376,7 @@ class MovieSelection(Screen, HelpableScreen, SelectionEventInfo): def gotFilename(self, res): if res is not None and res is not config.movielist.last_videodir.value: - if pathExists(res): + if fileExists(res): config.movielist.last_videodir.value = res config.movielist.last_videodir.save() self.current_ref = eServiceReference("2:0:1:0:0:0:0:0:0:0:" + res) @@ -392,7 +398,7 @@ class MovieSelection(Screen, HelpableScreen, SelectionEventInfo): 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: + elif not tagele or tagele.value in self.selected_tags or not tagele.value in self.tags: self.showTagsMenu(tagele) else: self.selected_tags_ele = tagele diff --git a/lib/python/Screens/TimerEdit.py b/lib/python/Screens/TimerEdit.py index caaf8c95..54354987 100644 --- a/lib/python/Screens/TimerEdit.py +++ b/lib/python/Screens/TimerEdit.py @@ -4,6 +4,7 @@ from Components.config import config from Components.MenuList import MenuList from Components.TimerList import TimerList from Components.TimerSanityCheck import TimerSanityCheck +from Components.UsageConfig import preferredTimerPath from RecordTimer import RecordTimerEntry, parseEvent, AFTEREVENT from Screen import Screen from Screens.ChoiceBox import ChoiceBox @@ -243,7 +244,7 @@ class TimerEditList(Screen): else: data = parseEvent(event, description = False) - self.addTimer(RecordTimerEntry(serviceref, checkOldTimers = True, dirname = config.movielist.last_timer_videodir.value, *data)) + self.addTimer(RecordTimerEntry(serviceref, checkOldTimers = True, dirname = preferredTimerPath(), *data)) def addTimer(self, timer): self.session.openWithCallback(self.finishedAdd, TimerEntry, timer) diff --git a/lib/python/Screens/TimerEntry.py b/lib/python/Screens/TimerEntry.py index edd19685..5813bac5 100644 --- a/lib/python/Screens/TimerEntry.py +++ b/lib/python/Screens/TimerEntry.py @@ -8,11 +8,11 @@ from Components.MenuList import MenuList from Components.Button import Button from Components.Label import Label from Components.Pixmap import Pixmap +from Components.UsageConfig import defaultMoviePath from Screens.MovieSelection import getPreferredTagEditor from Screens.LocationBox import MovieLocationBox from Screens.ChoiceBox import ChoiceBox from RecordTimer import AFTEREVENT -from Tools.Directories import resolveFilename, SCOPE_HDD from enigma import eEPGCache from time import localtime, mktime, time, strftime from datetime import datetime @@ -106,7 +106,7 @@ class TimerEntry(Screen, ConfigListScreen): self.timerentry_starttime = ConfigClock(default = self.timer.begin) self.timerentry_endtime = ConfigClock(default = self.timer.end) - default = self.timer.dirname or resolveFilename(SCOPE_HDD) + default = self.timer.dirname or defaultMoviePath() tmp = config.movielist.videodirs.value if default not in tmp: tmp.append(default) @@ -273,9 +273,10 @@ class TimerEntry(Screen, ConfigListScreen): 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 - config.movielist.last_timer_videodir.save() + if self.timer.dirname or self.timerentry_dirname.value != defaultMoviePath(): + self.timer.dirname = self.timerentry_dirname.value + config.movielist.last_timer_videodir.value = self.timer.dirname + config.movielist.last_timer_videodir.save() if self.timerentry_type.value == "once": self.timer.begin, self.timer.end = self.getBeginEnd() |
