6 # Coded by Dr.Best (c) 2009
7 # Support: www.dreambox-tools.info
9 # This program is free software; you can redistribute it and/or
10 # modify it under the terms of the GNU General Public License
11 # as published by the Free Software Foundation; either version 2
12 # of the License, or (at your option) any later version.
14 # This program is distributed in the hope that it will be useful,
15 # but WITHOUT ANY WARRANTY; without even the implied warranty of
16 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 # GNU General Public License for more details.
20 from enigma import eListboxPythonMultiContent, eListbox, gFont, \
21 RT_HALIGN_LEFT, RT_VALIGN_CENTER
22 from Screens.Screen import Screen
23 from Screens.MessageBox import MessageBox
24 from Components.MenuList import MenuList
25 from Components.Button import Button
26 from Components.config import config
27 from Components.ActionMap import ActionMap, NumberActionMap
28 from Components.ConfigList import ConfigList, ConfigListScreen
29 from Components.config import ConfigSubsection, ConfigSubList, ConfigIP, ConfigInteger, ConfigSelection, ConfigText, ConfigYesNo, getConfigListEntry, configfile
31 # for localized messages
34 def initPartnerboxEntryConfig():
35 config.plugins.Partnerbox.Entries.append(ConfigSubsection())
36 i = len(config.plugins.Partnerbox.Entries) -1
37 config.plugins.Partnerbox.Entries[i].name = ConfigText(default = "dreambox", visible_width = 50, fixed_size = False)
38 config.plugins.Partnerbox.Entries[i].ip = ConfigIP(default = [192,168,0,98])
39 config.plugins.Partnerbox.Entries[i].port = ConfigInteger(default=80, limits=(1, 65555))
40 config.plugins.Partnerbox.Entries[i].enigma = ConfigSelection(default="0", choices = [("0", _("Enigma 2")),("1", _("Enigma 1"))])
41 config.plugins.Partnerbox.Entries[i].password = ConfigText(default = "dreambox", visible_width = 50, fixed_size = False)
42 config.plugins.Partnerbox.Entries[i].useinternal = ConfigSelection(default="1", choices = [("0", _("use external")),("1", _("use internal"))])
43 return config.plugins.Partnerbox.Entries[i]
46 count = config.plugins.Partnerbox.entriescount.value
50 initPartnerboxEntryConfig()
53 class PartnerboxSetup(ConfigListScreen, Screen):
55 <screen position="center,center" size="550,400" title="Partnerbox Setup" >
56 <widget name="config" position="20,10" size="510,330" scrollbarMode="showOnDemand" />
57 <widget name="key_red" position="0,350" size="140,40" valign="center" halign="center" zPosition="5" transparent="1" foregroundColor="white" font="Regular;18"/>
58 <widget name="key_green" position="140,350" size="140,40" valign="center" halign="center" zPosition="5" transparent="1" foregroundColor="white" font="Regular;18"/>
59 <widget name="key_yellow" position="280,350" size="140,40" valign="center" halign="center" zPosition="5" transparent="1" foregroundColor="white" font="Regular;18"/>
60 <ePixmap name="red" pixmap="skin_default/buttons/red.png" position="0,350" size="140,40" zPosition="4" transparent="1" alphatest="on"/>
61 <ePixmap name="green" pixmap="skin_default/buttons/green.png" position="140,350" size="140,40" zPosition="4" transparent="1" alphatest="on"/>
62 <ePixmap name="yellow" pixmap="skin_default/buttons/yellow.png" position="280,350" size="140,40" zPosition="4" transparent="1" alphatest="on"/>
65 def __init__(self, session, args = None):
66 Screen.__init__(self, session)
68 self["key_red"] = Button(_("Cancel"))
69 self["key_green"] = Button(_("OK"))
70 self["key_yellow"] = Button(_("Partnerbox Entries"))
74 self.list.append(getConfigListEntry(_("Show 'RemoteTimer' in E-Menu"), config.plugins.Partnerbox.showremotetimerinextensionsmenu))
75 self.list.append(getConfigListEntry(_("Show 'RemoteTV Player' in E-Menu"), config.plugins.Partnerbox.showremotetvinextensionsmenu))
76 self.list.append(getConfigListEntry(_("Show 'Stream current Service' in E-Menu"), config.plugins.Partnerbox.showcurrentstreaminextensionsmenu))
77 self.list.append(getConfigListEntry(_("Enable Partnerbox-Function in TimerEvent"), config.plugins.Partnerbox.enablepartnerboxintimerevent))
78 self.list.append(getConfigListEntry(_("Enable Partnerbox-Function in EPGList"), config.plugins.Partnerbox.enablepartnerboxepglist))
79 ConfigListScreen.__init__(self, self.list, session)
80 self["setupActions"] = ActionMap(["SetupActions", "ColorActions"],
82 "green": self.keySave,
83 "cancel": self.keyClose,
85 "yellow": self.PartnerboxEntries,
89 for x in self["config"].list:
92 self.close(self.session, True)
95 for x in self["config"].list:
97 self.close(self.session, False)
99 def PartnerboxEntries(self):
100 self.session.open(PartnerboxEntriesListConfigScreen)
103 class PartnerboxEntriesListConfigScreen(Screen):
105 <screen position="center,center" size="550,400" title="%s" >
106 <widget name="name" position="5,0" size="150,50" font="Regular;20" halign="left"/>
107 <widget name="ip" position="120,0" size="50,50" font="Regular;20" halign="left"/>
108 <widget name="port" position="270,0" size="100,50" font="Regular;20" halign="left"/>
109 <widget name="type" position="410,0" size="160,50" font="Regular;20" halign="left"/>
110 <widget name="entrylist" position="0,50" size="550,300" scrollbarMode="showOnDemand"/>
112 <widget name="key_red" position="0,350" size="140,40" zPosition="5" valign="center" halign="center" backgroundColor="red" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
113 <widget name="key_yellow" position="280,350" size="140,40" zPosition="5" valign="center" halign="center" backgroundColor="yellow" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
114 <widget name="key_blue" position="420,350" zPosition="5" size="140,40" valign="center" halign="center" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
115 <ePixmap name="red" position="0,350" zPosition="4" size="140,40" pixmap="skin_default/buttons/red.png" transparent="1" alphatest="on" />
116 <ePixmap name="yellow" position="280,350" zPosition="4" size="140,40" pixmap="skin_default/buttons/yellow.png" transparent="1" alphatest="on" />
117 <ePixmap name="blue" position="420,350" zPosition="4" size="140,40" pixmap="skin_default/buttons/blue.png" transparent="1" alphatest="on" />
118 </screen>""" % _("Partnerbox: List of Entries")
120 def __init__(self, session, what = None):
121 Screen.__init__(self, session)
122 self.session = session
123 self["name"] = Button(_("Name"))
124 self["ip"] = Button(_("IP"))
125 self["port"] = Button(_("Port"))
126 self["type"] = Button(_("Enigma Type"))
127 self["key_red"] = Button(_("Add"))
128 self["key_yellow"] = Button(_("Edit"))
129 self["key_blue"] = Button(_("Delete"))
130 self["entrylist"] = PartnerboxEntryList([])
131 self["actions"] = ActionMap(["WizardActions","MenuActions","ShortcutActions"],
134 "back" : self.keyClose,
136 "yellow": self.keyYellow,
137 "blue": self.keyDelete,
142 def updateList(self):
143 self["entrylist"].buildList()
146 self.close(self.session, self.what, None)
149 self.session.openWithCallback(self.updateList,PartnerboxEntryConfigScreen,None)
152 try:sel = self["entrylist"].l.getCurrentSelection()[0]
154 self.close(self.session, self.what, sel)
157 try:sel = self["entrylist"].l.getCurrentSelection()[0]
161 self.session.openWithCallback(self.updateList,PartnerboxEntryConfigScreen,sel)
164 try:sel = self["entrylist"].l.getCurrentSelection()[0]
168 self.session.openWithCallback(self.deleteConfirm, MessageBox, _("Really delete this Partnerbox Entry?"))
170 def deleteConfirm(self, result):
173 sel = self["entrylist"].l.getCurrentSelection()[0]
174 config.plugins.Partnerbox.entriescount.value = config.plugins.Partnerbox.entriescount.value - 1
175 config.plugins.Partnerbox.entriescount.save()
176 config.plugins.Partnerbox.Entries.remove(sel)
177 config.plugins.Partnerbox.Entries.save()
178 config.plugins.Partnerbox.save()
182 class PartnerboxEntryList(MenuList):
183 def __init__(self, list, enableWrapAround = True):
184 MenuList.__init__(self, list, enableWrapAround, eListboxPythonMultiContent)
185 self.l.setFont(0, gFont("Regular", 20))
186 self.l.setFont(1, gFont("Regular", 18))
187 def postWidgetCreate(self, instance):
188 MenuList.postWidgetCreate(self, instance)
189 instance.setItemHeight(20)
193 for c in config.plugins.Partnerbox.Entries:
195 res.append((eListboxPythonMultiContent.TYPE_TEXT, 5, 0, 150, 20, 1, RT_HALIGN_LEFT|RT_VALIGN_CENTER, str(c.name.value)))
196 ip = "%d.%d.%d.%d" % tuple(c.ip.value)
197 res.append((eListboxPythonMultiContent.TYPE_TEXT, 120, 0, 150, 20, 1, RT_HALIGN_LEFT|RT_VALIGN_CENTER, str(ip)))
198 port = "%d"%(c.port.value)
199 res.append((eListboxPythonMultiContent.TYPE_TEXT, 270, 0, 100, 20, 1, RT_HALIGN_LEFT|RT_VALIGN_CENTER, str(port)))
200 if int(c.enigma.value) == 0:
204 res.append((eListboxPythonMultiContent.TYPE_TEXT, 410, 0, 100, 20, 1, RT_HALIGN_LEFT|RT_VALIGN_CENTER, str(e_type)))
205 self.list.append(res)
206 self.l.setList(self.list)
209 class PartnerboxEntryConfigScreen(ConfigListScreen, Screen):
211 <screen name="PartnerboxEntryConfigScreen" position="center,center" size="550,400" title="%s">
212 <widget name="config" position="20,10" size="520,330" scrollbarMode="showOnDemand" />
213 <ePixmap name="red" position="0,350" zPosition="4" size="140,40" pixmap="skin_default/buttons/red.png" transparent="1" alphatest="on" />
214 <ePixmap name="green" position="140,350" zPosition="4" size="140,40" pixmap="skin_default/buttons/green.png" transparent="1" alphatest="on" />
215 <ePixmap name="blue" position="420,350" zPosition="4" size="140,40" pixmap="skin_default/buttons/blue.png" transparent="1" alphatest="on" />
217 <widget name="key_red" position="0,350" zPosition="5" size="140,40" valign="center" halign="center" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
218 <widget name="key_green" position="140,350" zPosition="5" size="140,40" valign="center" halign="center" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
219 <widget name="key_blue" position="420,350" zPosition="5" size="140,40" valign="center" halign="center" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
220 </screen>""" % _("Partnerbox: Edit Entry")
222 def __init__(self, session, entry):
223 self.session = session
224 Screen.__init__(self, session)
226 self["actions"] = ActionMap(["SetupActions", "ColorActions"],
228 "green": self.keySave,
229 "red": self.keyCancel,
230 "blue": self.keyDelete,
231 "cancel": self.keyCancel
234 self["key_red"] = Button(_("Cancel"))
235 self["key_green"] = Button(_("OK"))
236 self["key_blue"] = Button(_("Delete"))
240 self.current = initPartnerboxEntryConfig()
246 getConfigListEntry(_("Name"), self.current.name),
247 getConfigListEntry(_("IP"), self.current.ip),
248 getConfigListEntry(_("Port"), self.current.port),
249 getConfigListEntry(_("Enigma Type"), self.current.enigma),
250 getConfigListEntry(_("Password"), self.current.password),
251 getConfigListEntry(_("Servicelists/EPG"), self.current.useinternal)
254 ConfigListScreen.__init__(self, cfglist, session)
257 if self.newmode == 1:
258 config.plugins.Partnerbox.entriescount.value = config.plugins.Partnerbox.entriescount.value + 1
259 config.plugins.Partnerbox.entriescount.save()
260 ConfigListScreen.keySave(self)
261 config.plugins.Partnerbox.save()
266 if self.newmode == 1:
267 config.plugins.Partnerbox.Entries.remove(self.current)
268 ConfigListScreen.cancelConfirm(self, True)
271 if self.newmode == 1:
274 self.session.openWithCallback(self.deleteConfirm, MessageBox, _("Really delete this Partnerbox Entry?"))
276 def deleteConfirm(self, result):
279 config.plugins.Partnerbox.entriescount.value = config.plugins.Partnerbox.entriescount.value - 1
280 config.plugins.Partnerbox.entriescount.save()
281 config.plugins.Partnerbox.Entries.remove(self.current)
282 config.plugins.Partnerbox.Entries.save()
283 config.plugins.Partnerbox.save()