1 from Screens.Screen import Screen
3 from enigma import eTimer, fbClass, eRCInput
8 from vbipc import VBController
10 class HbbTVWindow(Screen):
12 <screen name="HbbTVWindow" position="0,0" size="1280,720" backgroundColor="transparent" flags="wfNoBorder" title="HbbTV Plugin">
15 def __init__(self, session, url=None, app_info=None):
16 vbcfg.g_position = vbcfg.getPosition()
17 fbClass.getInstance().lock()
18 eRCInput.getInstance().lock()
20 Screen.__init__(self, session)
25 self.onLayoutFinish.append(self.start_hbbtv_application)
27 self._close_timer = eTimer()
28 self._close_timer.callback.append(self.stop_hbbtv_application)
31 if self._cb_set_title not in vbcfg.g_main.vbhandler.onSetTitleCB:
32 vbcfg.g_main.vbhandler.onSetTitleCB.append(self._cb_set_title)
37 if self._cb_close_window not in vbcfg.g_main.vbhandler.onCloseCB:
38 vbcfg.g_main.vbhandler.onCloseCB.append(self._cb_close_window)
42 def _cb_set_title(self, title=None):
43 vbcfg.LOG("pate title: %s" % title)
48 def _cb_close_window(self):
49 self._close_timer.start(1000)
51 def start_hbbtv_application(self):
52 vbcfg.g_main.vbhandler.soft_volume = -1
53 self.setTitle(_('HbbTV Plugin'))
54 vbcfg.LOG("Starting HbbTV")
56 vbcfg.DEBUG("url : %s" % self._url and self._url)
57 vbcfg.DEBUG("info: %s" % self._info and self._info)
59 if self._info and self._info["control"] == 1 and vbcfg.g_channel_info is not None:
60 (sid, onid, tsid, name) = vbcfg.g_channel_info
61 params = struct.pack('iiiiii', 0, self._info["orgid"], sid, onid, tsid, 0) + vbcfg.g_channel_info[3]
62 ret = VBController.command('HBBTV_LOADAIT', params)
64 ret = VBController.command('HBBTV_OPENURL', self._url)
67 self._close_timer.start(1000)
68 vbcfg.ERR("Failed to start hbbtv")
70 def stop_hbbtv_application(self):
71 self._close_timer.stop()
72 self._close_timer = None
75 if self._cb_set_title in vbcfg.g_main.vbhandler.onSetTitleCB:
76 vbcfg.g_main.vbhandler.onSetTitleCB.remove(self._cb_set_title)
81 if self._cb_close_window in vbcfg.g_main.vbhandler.onCloseCB:
82 vbcfg.g_main.vbhandler.onCloseCB.remove(self._cb_close_window)
86 from enigma import getDesktop, gMainDC
88 desktop_size = dsk.size()
89 gMainDC.getInstance().setResolution(desktop_size.width(), desktop_size.height())
91 vbcfg.setPosition(vbcfg.g_position)
92 fbClass.getInstance().unlock()
93 eRCInput.getInstance().unlock()
96 vbcfg.LOG("Stop HbbTV")