From: kos Date: Fri, 15 Feb 2013 03:20:43 +0000 (+0900) Subject: [browser] fixed the plugin for using on the SD skin. X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_dvbapp;a=commitdiff_plain;h=ea5327e8c1b22fa809b4ca8b37af5395cc368312;hp=fd0ee85977125975fa45da6fce3f841844d2b9c3 [browser] fixed the plugin for using on the SD skin. --- diff --git a/lib/python/Plugins/Extensions/HbbTV/plugin.py b/lib/python/Plugins/Extensions/HbbTV/plugin.py index 13d686b..d6ed07b 100644 --- a/lib/python/Plugins/Extensions/HbbTV/plugin.py +++ b/lib/python/Plugins/Extensions/HbbTV/plugin.py @@ -57,8 +57,43 @@ class GlobalValues: need_restart = False plugin_browser = None + + resX = 0 + resY = 0 + def UpdateInfoBar(self): + if self.resX == 1024 and self.resY == 720: + return + try: + infobar = InfoBar.instance + if infobar._InfoBarShowHide__state != 3: + return + infobar.doTimerHide() + infobar.serviceStarted() + except: pass + __gval__ = GlobalValues() +def setDefaultResolution(x, y): + global __gval__ + __gval__.resX = x + __gval__.resY = y + +def setResolution(xres, yres): + global __gval__ + if __gval__.resX == 1280 and __gval__.resY == 720: + return + from enigma import gMainDC + gMainDC.getInstance().setResolution(xres, yres) + +def restoreResolution(): + global __gval__ + setResolution(1280, 720) + setResolution(__gval__.resX, __gval__.resY) + + if __gval__.resX == 1280 and __gval__.resY == 720: + return + __gval__.UpdateInfoBar() + def setPluginBrowser(browser=None): global __gval__ __gval__.plugin_browser = browser @@ -532,6 +567,7 @@ class HandlerHbbTV(Handler): def _cb_handleBrowserMenuReq(self, opcode, data): self._handle_dump(self._cb_handleBrowserMenuReq, opcode, data) + restoreResolution() fbClass.getInstance().unlock() eRCInput.getInstance().unlock() browser = getPluginBrowser() @@ -575,10 +611,12 @@ class HandlerHbbTV(Handler): def _cb_virtualKeyboardClosed(self, data=None): fbClass.getInstance().lock() eRCInput.getInstance().lock() + setResolution(1280, 720) command_util = getCommandUtil() command_util.sendCommand('OP_BROWSER_VKBD_RES', data) def _cb_handleShowVirtualKeyboard(self, opcode, data): self._handle_dump(self._cb_handleShowVirtualKeyboard, opcode, data) + restoreResolution() fbClass.getInstance().unlock() eRCInput.getInstance().unlock() if data == 0 or strIsEmpty(data): @@ -675,7 +713,7 @@ class HandlerHbbTV(Handler): return (channel_list_size, struct.pack('!IIII', sid, onid, tsid, namelen) + name) def _cb_handleSetPageTitle(self, opcode, data): - self._handle_dump(self._cb_handleCloseHbbTVBrowser, opcode, data) + self._handle_dump(self._cb_handleSetPageTitle, opcode, data) if data.startswith('file://') or data.startswith('http://'): return "OK" if self._on_set_title_cb is not None: @@ -710,6 +748,8 @@ class HandlerHbbTV(Handler): if before_service is not None: self._session.nav.playService(before_service) self._vod_uri = None + + restoreResolution() return (0, "OK") def _cb_handleVODPlayerURI(self, opcode, data): @@ -785,6 +825,7 @@ class HbbTVWindow(Screen, InfoBarNotifications): """ def __init__(self, session, url=None, cbf=None, useAIT=False, profile=0): self._session = session + setResolution(1280, 720) fbClass.getInstance().lock() eRCInput.getInstance().lock() @@ -893,6 +934,7 @@ class HbbTVWindow(Screen, InfoBarNotifications): if self._cb_closed_func is not None: self._cb_closed_func() except: pass + restoreResolution() fbClass.getInstance().unlock() eRCInput.getInstance().unlock() self.close() @@ -919,12 +961,12 @@ class HbbTVHelper(Screen): __gval__.command_server = ServerFactory().doListenUnixTCP('/tmp/.sock.hbbtv.url', __gval__.hbbtv_handelr) self._urls = None - #self._stop_opera() - #self._start_opera() - self._restart_opera() Screen.__init__(self, session) self._session = session + + self._restart_opera() + self._timer_infobar = eTimer() self._timer_infobar.callback.append(self._cb_registrate_infobar) self._timer_infobar.start(1000) @@ -939,6 +981,8 @@ class HbbTVHelper(Screen): _g_ssm_ = SimpleSharedMemory() _g_ssm_.doConnect() + self._callbackStartStop = None + def _cb_registrate_infobar(self): if InfoBar.instance: self._timer_infobar.stop() @@ -975,7 +1019,7 @@ class HbbTVHelper(Screen): def _cb_hbbtv_activated(self, title=None, url=None): if not self._is_browser_running(): message = _("HbbTV Browser was not running.\nPlease running browser before start HbbTV Application.") - self.session.open(MessageBox, message, MessageBox.TYPE_INFO) + self._session.open(MessageBox, message, MessageBox.TYPE_INFO) return service = self._session.nav.getCurrentlyPlayingServiceReference() setBeforeService(service) @@ -1015,6 +1059,7 @@ class HbbTVHelper(Screen): global HBBTVAPP_PATH start_command = '%s/launcher start'%(HBBTVAPP_PATH) os.system(start_command) + return True def _stop_opera(self): global HBBTVAPP_PATH @@ -1025,6 +1070,7 @@ class HbbTVHelper(Screen): global HBBTVAPP_PATH try: os.system('%s/launcher restart'%(HBBTVAPP_PATH)) except: pass + return True def getStartHbbTVUrl(self): url, self._urls, self._profile = None, None, 0 @@ -1055,8 +1101,9 @@ class HbbTVHelper(Screen): self._cb_hbbtv_activated(selected[1][1], selected[1][2]) except Exception, ErrMsg: print ErrMsg - def showBrowserConfigBox(self): + def showBrowserConfigBox(self, callback=None): start_stop_mode = [] + self._callbackStartStop = callback if self._is_browser_running(): start_stop_mode.append((_('Stop'),'Stop')) else: start_stop_mode.append((_('Start'),'Start')) @@ -1065,6 +1112,8 @@ class HbbTVHelper(Screen): def _browser_config_selected(self, selected): if selected is None: return + if self._callbackStartStop is not None: + self._callbackStartStop() try: mode = selected[1] if mode == 'Start': @@ -1152,7 +1201,7 @@ class OperaBrowserSetting: class OperaBrowserPreferenceWindow(ConfigListScreen, Screen): skin= """ - + @@ -1434,7 +1483,7 @@ class BookmarkEditWindow(ConfigListScreen, Screen): class OperaBrowserBookmarkWindow(Screen): skin = """ - + @@ -1714,18 +1763,22 @@ class OperaBrowser(Screen): SUBMENULIST_HEIGHT = 25 SUBMENULIST_NEXT = 2 + # menulist->position->y : MENUBAR_ITEM_HEIGHT+30 + # menulist->size->x : SUBMENULIST_WIDTH + # submenulist->position->x : SUBMENULIST_WIDTH+50+SUBMENULIST_NEXT + # submenulist->position->y : MENUBAR_ITEM_HEIGHT+30 + # submenulist->size->x : SUBMENULIST_WIDTH skin = """ - + - - + + - - """ % (MENUBAR_ITEM_HEIGHT+30, SUBMENULIST_WIDTH, SUBMENULIST_WIDTH+50+SUBMENULIST_NEXT, MENUBAR_ITEM_HEIGHT+30, SUBMENULIST_WIDTH)# modify menu - + + """ MENUITEMS_LIST =[[(_('Open Startpage'), None), (_('Open URL'), None), (_('Start/Stop'),None), (_('Exit'), None)], [(_('Bookmark'), None), (_('Preference'), None)], [(_('About'), None), (_('Help'), None)]] @@ -1860,12 +1913,14 @@ class OperaBrowser(Screen): self._on_setPageTitle(_('Opera Browser')) self.enableRCMouse(False) self.toggleMainScreen() + restoreResolution() fbClass.getInstance().unlock() eRCInput.getInstance().unlock() self._terminatedBrowser = True self._enableKeyEvent = True #if not self.toggleListViewFlag: # self.keyDown() + self._currentPageUrl = '' if self.paramUrl is not None: self.keyCancel() @@ -1880,6 +1935,9 @@ class OperaBrowser(Screen): self.setTitle(title) def cbUrlText(self, data=None, mode=0): + global _g_helper + if not _g_helper._is_browser_running(): + return print "Inputed Url :", data, mode if strIsEmpty(data): return @@ -1891,8 +1949,12 @@ class OperaBrowser(Screen): command_server.onHbbTVCloseCB.append(self._on_close_window) self.toggleMainScreen() self.enableRCMouse(True) + fbClass.getInstance().lock() eRCInput.getInstance().lock() + + setResolution(1280, 720) + command_util = getCommandUtil() command_util.sendCommand('OP_BROWSER_OPEN_URL', data, mode) self._terminatedBrowser = False @@ -1905,6 +1967,11 @@ class OperaBrowser(Screen): if data is None: return (url, mode) = data + global _g_helper + if not _g_helper._is_browser_running(): + message = _("Opera Browser was not running.\nPlease running browser using [File]>[Start/Stop] menu.") + self.session.open(MessageBox, message, MessageBox.TYPE_INFO) + return self.cbUrlText(url, mode) def _cmd_on_OpenUrl(self): @@ -1918,11 +1985,14 @@ class OperaBrowser(Screen): self.session.open(MessageBox, _('Opera Web Browser Plugin v1.0'), type = MessageBox.TYPE_INFO) def _cmd_on_Exit(self): self.close() + def _cb_cmdOnStartSTop(self): + self.keyMenu() def _cmd_on_StartStop(self): global _g_helper if _g_helper is None: return - _g_helper.showBrowserConfigBox() + _g_helper.showBrowserConfigBox(self._cb_cmdOnStartSTop) + def _cmd_on_Bookmark(self): url = self._currentPageUrl if url is None: @@ -1973,6 +2043,9 @@ class OperaBrowser(Screen): except Exception, ErrMsg: print ErrMsg def keyOK(self): + if not self.toggleMainScreenFlag: + self.keyMenu() + return if not self.toggleListViewFlag: self.keyDown() return @@ -2056,6 +2129,7 @@ class OperaBrowser(Screen): #self._session.openWithCallback(self._cb_virtualKeyboardClosed, VirtualKeyBoard, title=("Please enter URL here"), text="") fbClass.getInstance().lock() eRCInput.getInstance().lock() + setResolution(1280, 720) if self.toggleListViewFlag: self.toggleMainScreen() self._currentPageUrl = None @@ -2093,6 +2167,11 @@ from Screens.HelpMenu import HelpableScreen def session_start_main(session, reason, **kwargs): fbClass.getInstance().unlock() eRCInput.getInstance().unlock() + + from enigma import getDesktop + desktopSize = getDesktop(0).size() + setDefaultResolution(desktopSize.width(), desktopSize.height()) + global _g_helper _g_helper = session.open(HbbTVHelper)