From: kos Date: Fri, 30 Sep 2011 08:36:17 +0000 (+0900) Subject: [webbrowser] fix info X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_dvbapp;a=commitdiff_plain;h=37f5743eb23b562f65cdbbcdd28c7cf5cfccad2c [webbrowser] fix info --- diff --git a/lib/python/Plugins/Extensions/WebBrowser/plugin.py b/lib/python/Plugins/Extensions/WebBrowser/plugin.py index 228db99..5e041b9 100644 --- a/lib/python/Plugins/Extensions/WebBrowser/plugin.py +++ b/lib/python/Plugins/Extensions/WebBrowser/plugin.py @@ -1,6 +1,6 @@ from Plugins.Plugin import PluginDescriptor -import time, os, socket, thread +import time, os, socket, thread, socket from socket import gaierror, error from os import path as os_path, remove as os_remove @@ -37,17 +37,17 @@ from enigma import eTimer, eServiceReference, iPlayableService, fbClass, eRCInpu HTTPConnection.debuglevel = 1 lock = False -def player_lock(): +def wb_lock(): global lock lock = True fbClass.getInstance().unlock() -def player_unlock(): +def wb_unlock(): global lock fbClass.getInstance().lock() lock = False -def player_islock(): +def wb_islock(): global lock return lock @@ -134,7 +134,7 @@ class VuPlayer(Screen, InfoBarNotifications): def cbDoExit(self, answer): answer = answer and answer[1] if answer == "y": - player_unlock() + wb_unlock() self.close() elif answer == "n": if self.state != self.PLAYER_IDLE: @@ -272,11 +272,11 @@ class VuPlayerLauncher: session.open(MessageBox, _("Sorry, video is not available!"), MessageBox.TYPE_INFO) return - player_lock() + wb_lock() myreference = eServiceReference(4097, 0, myurl) session.open(VuPlayer, myreference, service) except Exception, msg: - player_unlock() + wb_unlock() print "Error >>", msg class VuPlayerService: @@ -304,6 +304,7 @@ class VuPlayerService: def run(self, e = True): if self.enable: return + print "VuPlayerService start!!" self.enable = e self.sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) self.sock.settimeout(self.socket_timeout) @@ -313,50 +314,58 @@ class VuPlayerService: try: conn, addr = self.sock.accept() self.parseHandle(conn, addr) - conn.close() except socket.timeout: #print "[socket timeout]" pass + print "VuPlayerService stop!!" def parseHandle(self, conn, addr): # [http://www.youtube.com/watch?v=BpThu778qB4&feature=related] data = conn.recv(self.max_buffer_size) - print "[%s]" % (data) - tmp = data.split("?") - print tmp # ['http://www.youtube.com/watch', 'v=BpThu778qB4&feature=related'] - service = self.session.nav.getCurrentlyPlayingServiceReference() - if len(tmp) == 2 and tmp[0] == "http://www.youtube.com/watch": - tmp = tmp[1].split("&") - print tmp # ['v=BpThu778qB4', 'feature=related'] - if len(tmp) == 2: - tmp = tmp[0].split("=") - print tmp # ['v', 'BpThu778qB4'] - if len(tmp) == 2 and tmp[0] == "v": - player = VuPlayerLauncher() - player.run(tmp[1], self.session, service) - while player_islock(): - time.sleep(1) - self.session.nav.playService(service) - data = "ok$" + print "[%s]" % (data) + if data.startswith("http://www.youtube.com"): + tmp = data.split("?") + print tmp # ['http://www.youtube.com/watch', 'v=BpThu778qB4&feature=related'] + service = self.session.nav.getCurrentlyPlayingServiceReference() + if len(tmp) == 2 and tmp[0] == "http://www.youtube.com/watch": + tmp = tmp[1].split("&") + print tmp # ['v=BpThu778qB4', 'feature=related'] + if len(tmp) == 2: + tmp = tmp[0].split("=") + print tmp # ['v', 'BpThu778qB4'] + if len(tmp) == 2 and tmp[0] == "v": + player = VuPlayerLauncher() + player.run(tmp[1], self.session, service) + while wb_islock(): + time.sleep(1) + self.session.nav.playService(service) + data = "ok$" + else: + data = "nok$parsing fail" else: data = "nok$parsing fail" else: data = "nok$parsing fail" - else: - data = "nok$parsing fail" + self.sendResponse(conn, data) + + def sendResponse(self, conn, data): conn.send(data) + conn.close() class BrowserLauncher(ConfigListScreen, Screen): skin= """ - - - - - - - + + + + + + + + + """ + def __init__(self, session): Screen.__init__(self, session) self.session = session @@ -366,18 +375,17 @@ class BrowserLauncher(ConfigListScreen, Screen): self.mouse_cond = "/proc/stb/fp/mouse" self["actions"] = ActionMap(["OkCancelActions", "ShortcutActions", "WizardActions", "ColorActions", "SetupActions", ], { "red": self.keyCancel, - "cancel": self.keyCancel, "green": self.keyGo, + "cancel": self.keyExit, }, -2) + self.info = Label(_("If you want to quit the Browser,\nPress RED and EXIT.")) + self["info"] = self.info + self["key_red"] = StaticText(_("Exit")) + self["key_green"] = StaticText(_("Start")) self.list = [] ConfigListScreen.__init__(self, self.list) - self["key_red"] = StaticText(_("Exit")) - self["key_green"] = StaticText(_("Start")) - self.introduntion = Label(_(" ")) - self["introduction"] = self.introduntion - self.devices_string = "" self.mouse_choice_list = [] self.mouse_device_list = [] @@ -390,6 +398,10 @@ class BrowserLauncher(ConfigListScreen, Screen): self.vu_service = VuPlayerService(self.session) self.vu_service.start(timeout=5) + self.exit_wait_cond = False + self.timer_exit_cond = eTimer() + self.timer_exit_cond.callback.append(self.resetExitCond) + def enableRCMouse(self, mode): #mode=[0|1]|[False|True] if os.path.exists(self.mouse_cond): self.cmd("echo %d > %s" % (mode, self.mouse_cond)) @@ -401,17 +413,37 @@ class BrowserLauncher(ConfigListScreen, Screen): def keyNone(self): None + def doExit(self): + self.vu_service.stop() + self.cmd("killall -9 %s"%(self.browser_name)) + self.cmd("echo 60 > /proc/sys/vm/swappiness") + if self.mouse.value == 0: + self.enableRCMouse(False) #rc-mouse off + fbClass.getInstance().unlock() + #eRCInput.getInstance().unlock() + self.close() + + def keyExit(self): + if self.exit_wait_cond: + self.doExit() + if self.isProcessRunable() == False: + self.doExit() + def keyCancel(self): - #if self.lock == False: - self.vu_service.stop() - self.cmd("killall -9 %s"%(self.browser_name)) - self.cmd("echo 60 > /proc/sys/vm/swappiness") - self.introduntion.setText(" ") - if self.mouse.value == 0: - self.enableRCMouse(False) #rc-mouse off - fbClass.getInstance().unlock() - #eRCInput.getInstance().unlock() - self.close() + if self.isProcessRunable() == False: + self.doExit() + self.exit_wait_cond = True + self.timer_exit_cond.start(5000) + + def resetExitCond(self): + self.timer_exit_cond.stop() + self.exit_wait_cond = False + + def isProcessRunable(self): + cmd = "/bin/ps -ef | grep %s | grep -v grep | awk \'{print $5}\'"%(self.browser_name) + for line in os.popen(cmd).readlines(): + return True + return False def makeConfig(self): self.devices = eConsoleAppContainer() @@ -515,50 +547,57 @@ class BrowserLauncher(ConfigListScreen, Screen): return tmp_h return "" + def startBrowser(self): + self.timer_start.stop() + + self.lock = True + self.cmd("killall -9 %s"%(self.browser_name)) + self.cmd("echo 0 > /proc/sys/vm/swappiness") + + kbd_cmd = "" + mouse_cmd = "" + extra_cmd = "" + browser_cmd = "%s/%s -qws" % (self.browser_root, self.browser_name) + + fbClass.getInstance().lock() + #eRCInput.getInstance().lock() + + if self.mouse.value == 0: + self.enableRCMouse(True) #rc-mouse on + idx = self.getListIndex(self.mouse_choice_list, 0) + mouse_cmd = "export QWS_MOUSE_PROTO=LinuxInput:/dev/input/%s; " % (self.mouse_device_list[idx]) + elif self.mouse.value == 1: + mouse_cmd = " " + #mouse_cmd = "export QWS_MOUSE_PROTO=Auto:/dev/input/%s; " % (m) + elif self.mouse.value == 2: + mouse_cmd = "export QWS_MOUSE_PROTO=None; " + + if self.keyboard.value == 0: + idx = self.getListIndex(self.keyboard_choice_list, 0) + kbd_cmd = "export QWS_KEYBOARD=LinuxInput:/dev/input/%s; " % (self.keyboard_device_list[idx]) + elif self.keyboard.value == 1: + idx = self.getListIndex(self.keyboard_choice_list, 1) + kbd_cmd = "export QWS_KEYBOARD=LinuxInput:/dev/input/%s; " % (self.keyboard_device_list[idx]) + elif self.keyboard.value == 2: + kbd_cmd = " " + print "mouse cmd >>", mouse_cmd, " >> ", self.mouse.value + print "keyboard cmd >>", kbd_cmd, " >> ", self.keyboard.value + + cmd = "%s%s%s%s" % (extra_cmd, kbd_cmd, mouse_cmd, browser_cmd) + print "prepared command : [%s]" % cmd + + self.launcher = eConsoleAppContainer() + self.launcher.appClosed.append(self.callbackLauncherAppClosed) + self.launcher.dataAvail.append(self.callbackLauncherDataAvail) + self.launcher.execute(cmd) + print "started browser..." + def keyGo(self): + self.info.setText("Starting Webbrowser. Please wait...") if self.lock == False: - self.lock = True - - self.introduntion.setText("Run web-browser.\nPlease, wait...") - self.cmd("echo 0 > /proc/sys/vm/swappiness") - - kbd_cmd = "" - mouse_cmd = "" - extra_cmd = "" - browser_cmd = "%s/%s -qws" % (self.browser_root, self.browser_name) - - fbClass.getInstance().lock() - #eRCInput.getInstance().lock() - - if self.mouse.value == 0: - self.enableRCMouse(True) #rc-mouse on - idx = self.getListIndex(self.mouse_choice_list, 0) - mouse_cmd = "export QWS_MOUSE_PROTO=LinuxInput:/dev/input/%s; " % (self.mouse_device_list[idx]) - elif self.mouse.value == 1: - mouse_cmd = " " - #mouse_cmd = "export QWS_MOUSE_PROTO=Auto:/dev/input/%s; " % (m) - elif self.mouse.value == 2: - mouse_cmd = "export QWS_MOUSE_PROTO=None; " - - if self.keyboard.value == 0: - idx = self.getListIndex(self.keyboard_choice_list, 0) - kbd_cmd = "export QWS_KEYBOARD=LinuxInput:/dev/input/%s; " % (self.keyboard_device_list[idx]) - elif self.keyboard.value == 1: - idx = self.getListIndex(self.keyboard_choice_list, 1) - kbd_cmd = "export QWS_KEYBOARD=LinuxInput:/dev/input/%s; " % (self.keyboard_device_list[idx]) - elif self.keyboard.value == 2: - kbd_cmd = " " - print "mouse cmd >>", mouse_cmd, " >> ", self.mouse.value - print "keyboard cmd >>", kbd_cmd, " >> ", self.keyboard.value - - cmd = "%s%s%s%s" % (extra_cmd, kbd_cmd, mouse_cmd, browser_cmd) - print "prepared command : [%s]" % cmd - - self.launcher = eConsoleAppContainer() - self.launcher.appClosed.append(self.callbackLauncherAppClosed) - self.launcher.dataAvail.append(self.callbackLauncherDataAvail) - self.launcher.execute(cmd) - print "running arora..." + self.timer_start = eTimer() + self.timer_start.callback.append(self.startBrowser) + self.timer_start.start(10) def getListIndex(self, l, v): idx = 0 @@ -572,15 +611,21 @@ class BrowserLauncher(ConfigListScreen, Screen): print ret_data if ret_data.startswith("--done--"): self.lock = False - self.keyCancel() - + self.doExit() + def callbackLauncherAppClosed(self, retval = 1): - None + self.lock = False + +def sessionstart(session, **kwargs): + if os.path.exists("/proc/stb/fp/mouse"): + os.system("echo 0 > /proc/stb/fp/mouse") def main(session, **kwargs): session.open(BrowserLauncher) - -def Plugins(**kwargs): - return PluginDescriptor(name=_("Web Browser"), description="start web browser", where = PluginDescriptor.WHERE_PLUGINMENU, fnc=main) + +def Plugins(**kwargs): + return [PluginDescriptor(where = PluginDescriptor.WHERE_SESSIONSTART, needsRestart = False, fnc=sessionstart), + PluginDescriptor(name=_("Web Browser"), description="start web browser", where = PluginDescriptor.WHERE_PLUGINMENU, fnc=main)] +