+# for localized messages
+from . import _
+
# GUI (Screens)
from Screens.Screen import Screen
from Screens.HelpMenu import HelpableScreen
from Screens.MessageBox import MessageBox
from Screens.ChoiceBox import ChoiceBox
-from AutoTimerEditor import AutoTimerEditor
-from AutoTimerConfiguration import AutoTimerConfiguration
+from AutoTimerEditor import AutoTimerEditor, AutoTimerChannelSelection
+from AutoTimerSettings import AutoTimerSettings
from AutoTimerPreview import AutoTimerPreview
from AutoTimerImporter import AutoTimerImportSelector
+from AutoTimerWizard import AutoTimerWizard
# GUI (Components)
from AutoTimerList import AutoTimerList
from Components.ActionMap import HelpableActionMap
-from Components.Button import Button
+from Components.config import config
+from Components.Sources.StaticText import StaticText
+
+class AutoTimerOverviewSummary(Screen):
+ skin = """
+ <screen position="0,0" size="132,64">
+ <widget source="parent.Title" render="Label" position="6,4" size="120,21" font="Regular;18" />
+ <widget source="entry" render="Label" position="6,25" size="120,21" font="Regular;16" />
+ <widget source="global.CurrentTime" render="Label" position="56,46" size="82,18" font="Regular;16" >
+ <convert type="ClockToText">WithSeconds</convert>
+ </widget>
+ </screen>"""
+
+ def __init__(self, session, parent):
+ Screen.__init__(self, session, parent = parent)
+ self["entry"] = StaticText("")
+ self.onShow.append(self.addWatcher)
+ self.onHide.append(self.removeWatcher)
+
+ def addWatcher(self):
+ self.parent.onChangedEntry.append(self.selectionChanged)
+ self.parent.selectionChanged()
+
+ def removeWatcher(self):
+ self.parent.onChangedEntry.remove(self.selectionChanged)
-# Plugin
-from AutoTimerComponent import AutoTimerComponent
+ def selectionChanged(self, text):
+ self["entry"].text = text
class AutoTimerOverview(Screen, HelpableScreen):
"""Overview of AutoTimers"""
- skin = """<screen name="AutoTimerOverview" position="140,148" size="460,265" title="AutoTimer Overview">
- <widget name="entries" position="5,5" size="450,200" scrollbarMode="showOnDemand" />
- <ePixmap position="0,220" zPosition="1" size="140,40" pixmap="skin_default/buttons/green.png" alphatest="on" />
- <ePixmap position="140,220" zPosition="1" size="140,40" pixmap="skin_default/buttons/yellow.png" alphatest="on" />
- <ePixmap position="280,220" zPosition="1" size="140,40" pixmap="skin_default/buttons/blue.png" alphatest="on" />
- <ePixmap position="422,230" zPosition="1" size="35,25" pixmap="skin_default/buttons/key_menu.png" alphatest="on" />
- <widget name="key_green" position="0,220" zPosition="2" size="140,40" halign="center" valign="center" font="Regular;21" transparent="1" shadowColor="black" shadowOffset="-1,-1" />
- <widget name="key_yellow" position="140,220" zPosition="2" size="140,40" halign="center" valign="center" font="Regular;21" transparent="1" shadowColor="black" shadowOffset="-1,-1" />
- <widget name="key_blue" position="280,220" zPosition="2" size="140,40" halign="center" valign="center" font="Regular;21" transparent="1" shadowColor="black" shadowOffset="-1,-1" />
+ skin = """<screen name="AutoTimerOverview" position="center,center" size="460,280" title="AutoTimer Overview">
+ <ePixmap position="0,0" size="140,40" pixmap="skin_default/buttons/green.png" transparent="1" alphatest="on" />
+ <ePixmap position="140,0" size="140,40" pixmap="skin_default/buttons/yellow.png" transparent="1" alphatest="on" />
+ <ePixmap position="280,0" size="140,40" pixmap="skin_default/buttons/blue.png" transparent="1" alphatest="on" />
+ <ePixmap position="422,10" zPosition="1" size="35,25" pixmap="skin_default/buttons/key_menu.png" alphatest="on" />
+ <widget source="key_green" render="Label" position="0,0" zPosition="1" size="140,40" valign="center" halign="center" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
+ <widget source="key_yellow" render="Label" position="140,0" zPosition="1" size="140,40" valign="center" halign="center" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
+ <widget source="key_blue" render="Label" position="280,0" zPosition="1" size="140,40" valign="center" halign="center" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
+ <widget name="entries" position="5,45" size="450,225" scrollbarMode="showOnDemand" />
</screen>"""
def __init__(self, session, autotimer):
self.changed = False
# Button Labels
- self["key_green"] = Button(_("Save"))
- self["key_yellow"] = Button(_("Delete"))
- self["key_blue"] = Button(_("Add"))
+ self["key_green"] = StaticText(_("Save"))
+ self["key_yellow"] = StaticText(_("Delete"))
+ self["key_blue"] = StaticText(_("Add"))
# Create List of Timers
- self["entries"] = AutoTimerList(self.autotimer.getTupleTimerList())
+ self["entries"] = AutoTimerList(autotimer.getSortedTupleTimerList())
+
+ # Summary
+ self.onChangedEntry = []
+ self["entries"].onSelectionChanged.append(self.selectionChanged)
# Define Actions
self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions",
}
)
+ self.onLayoutFinish.append(self.setCustomTitle)
+
+ def setCustomTitle(self):
+ self.setTitle(_("AutoTimer overview"))
+
+ def createSummary(self):
+ return AutoTimerOverviewSummary
+
+ def selectionChanged(self):
+ sel = self["entries"].getCurrent()
+ text = sel and sel.name or ""
+ for x in self.onChangedEntry:
+ try:
+ x(text)
+ except Exception:
+ pass
+
def add(self):
newTimer = self.autotimer.defaultTimer.clone()
newTimer.id = self.autotimer.getUniqueId()
-
- self.session.openWithCallback(
- self.addCallback,
- AutoTimerEditor,
- newTimer
- )
+
+ if config.plugins.autotimer.editor.value == "wizard":
+ self.session.openWithCallback(
+ self.addCallback,
+ AutoTimerWizard,
+ newTimer
+ )
+ else:
+ self.session.openWithCallback(
+ self.addCallback,
+ AutoTimerEditor,
+ newTimer
+ )
def editCallback(self, ret):
if ret:
def refresh(self, res = None):
# Re-assign List
- self["entries"].setList(self.autotimer.getTupleTimerList())
+ cur = self["entries"].getCurrent()
+ self["entries"].setList(self.autotimer.getSortedTupleTimerList())
+ self["entries"].moveToEntry(cur)
def ok(self):
# Edit selected Timer
self.session.openWithCallback(
self.editCallback,
AutoTimerEditor,
- current[0]
+ current
)
def remove(self):
self.session.openWithCallback(
self.removeCallback,
MessageBox,
- _("Do you really want to delete %s?") % (cur[0].name),
+ _("Do you really want to delete %s?") % (cur.name),
)
def removeCallback(self, ret):
cur = self["entries"].getCurrent()
if ret and cur:
- self.autotimer.remove(cur[0].id)
+ self.autotimer.remove(cur.id)
self.refresh()
def cancel(self):
self.close(None)
def menu(self):
+ list = [
+ (_("Preview"), "preview"),
+ (_("Import existing Timer"), "import"),
+ (_("Import from EPG"), "import_epg"),
+ (_("Setup"), "setup"),
+ (_("Edit new timer defaults"), "defaults"),
+ ]
+
+ if config.plugins.autotimer.editor.value == "wizard":
+ list.append((_("Create a new timer using the classic editor"), "newplain"))
+ else:
+ list.append((_("Create a new timer using the wizard"), "newwizard"))
+
self.session.openWithCallback(
self.menuCallback,
ChoiceBox,
- list = [
- (_("Preview"), "preview"),
- (_("Import"), "import"),
- (_("Setup"), "setup"),
- (_("Edit new timer defaults"), "defaults")
- ],
+ list = list,
)
def menuCallback(self, ret):
timers
)
elif ret == "import":
- # XXX: apply defaults here too?
+ newTimer = self.autotimer.defaultTimer.clone()
+ newTimer.id = self.autotimer.getUniqueId()
+
self.session.openWithCallback(
self.importCallback,
AutoTimerImportSelector,
- AutoTimerComponent(
- self.autotimer.getUniqueId(), # Id
- "", # Name
- "", # Match
- True # Enabled
- )
+ newTimer
+ )
+ elif ret == "import_epg":
+ self.session.openWithCallback(
+ self.refresh,
+ AutoTimerChannelSelection,
+ self.autotimer
)
elif ret == "setup":
self.session.open(
- AutoTimerConfiguration
+ AutoTimerSettings
)
elif ret == "defaults":
self.session.open(
self.autotimer.defaultTimer,
editingDefaults = True
)
+ elif ret == "newwizard":
+ newTimer = self.autotimer.defaultTimer.clone()
+ newTimer.id = self.autotimer.getUniqueId()
+
+ self.session.openWithCallback(
+ self.addCallback, # XXX: we could also use importCallback... dunno what seems more natural
+ AutoTimerWizard,
+ newTimer
+ )
+ elif ret == "newplain":
+ newTimer = self.autotimer.defaultTimer.clone()
+ newTimer.id = self.autotimer.getUniqueId()
+
+ self.session.openWithCallback(
+ self.addCallback,
+ AutoTimerEditor,
+ newTimer
+ )
def save(self):
# Just close here, saving will be done by cb
self.close(self.session)
+