from Screens.InfoBarGenerics import InfoBarNotifications
from Screens.VirtualKeyBoard import VirtualKeyBoard
from Screens.HelpMenu import HelpableScreen
+from Screens.ChannelSelection import service_types_tv
from Components.PluginComponent import plugins
from Components.Button import Button
from Components.Pixmap import Pixmap
from Components.config import config, ConfigSubsection, ConfigPosition, getConfigListEntry, ConfigBoolean, ConfigInteger, ConfigText, ConfigSelection, configfile, getCharValue
-from enigma import eTimer, eConsoleAppContainer, getDesktop, eServiceReference, iPlayableService, iServiceInformation, RT_HALIGN_LEFT, RT_HALIGN_RIGHT, RT_HALIGN_CENTER, RT_VALIGN_CENTER, getPrevAsciiCode, eRCInput, fbClass
+from enigma import eTimer, eConsoleAppContainer, getDesktop, eServiceReference, iPlayableService, iServiceInformation, RT_HALIGN_LEFT, RT_HALIGN_RIGHT, RT_HALIGN_CENTER, RT_VALIGN_CENTER, getPrevAsciiCode, eRCInput, fbClass, eServiceCenter
from bookmark import BookmarkManager, BookmarkData, CategoryData
HBBTVAPP_PATH = "/usr/local/hbb-browser"
COMMAND_PATH = '/tmp/.sock.hbbtv.cmd'
+_g_helper = None
+
class GlobalValues:
command_util = None
command_server = None
,"OP_HBBTV_FULLSCREEN" : 0x0005
,"OP_HBBTV_TITLE" : 0x0006
,"OP_HBBTV_RETRY_OPEN_URL" : 0x0009
+ ,"OP_HBBTV_CHANGE_CHANNEL" : 0x000A
,"OP_OIPF_GET_CHANNEL_INFO_URL" : 0x0101
,"OP_OIPF_GET_CHANNEL_INFO_AIT" : 0x0102
,"OP_OIPF_GET_CHANNEL_INFO_LIST": 0x0103
,0x0005 : "OP_HBBTV_FULLSCREEN"
,0x0006 : "OP_HBBTV_TITLE"
,0x0009 : "OP_HBBTV_RETRY_OPEN_URL"
+ ,0x000A : "OP_HBBTV_CHANGE_CHANNEL"
,0x0101 : "OP_OIPF_GET_CHANNEL_INFO_URL"
,0x0102 : "OP_OIPF_GET_CHANNEL_INFO_AIT"
,0x0103 : "OP_OIPF_GET_CHANNEL_INFO_LIST"
0x0001 : self._cb_handleCloseHbbTVBrowser
,0x0006 : self._cb_handleSetPageTitle
,0x0009 : self._cb_handleHbbTVRetryOpen
+ ,0x000A : self._cb_handleHbbTVChangeChannel
,0x0101 : self._cb_handleGetChannelInfoForUrl
,0x0102 : self._cb_handleGetChannelInfoForAIT
,0x0103 : self._cb_handleGetChannelInfoList
self._on_set_title_cb = None
return self.doPack(opcode, params, reserved)
+ def _cb_handleHbbTVChangeChannel(self, opcode, data):
+ self._handle_dump(self._cb_handleHbbTVChangeChannel, opcode, data)
+ global _g_helper
+ if _g_helper is None:
+ return (0, "NOK")
+ dataItems = data.split(":")
+ sid = dataItems[0]
+ tsid = dataItems[1]
+ if not _g_helper.doChangeChannel(sid, tsid):
+ return (0, "NOK")
+
+
+ return (0, "OK")
+
def _cb_handleBrowserMenuReq(self, opcode, data):
self._handle_dump(self._cb_handleBrowserMenuReq, opcode, data)
+ fbClass.getInstance().unlock()
eRCInput.getInstance().unlock()
browser = getPluginBrowser()
if browser is not None:
return (0, "OK")
def _cb_virtualKeyboardClosed(self, data=None):
+ fbClass.getInstance().lock()
eRCInput.getInstance().lock()
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)
+ fbClass.getInstance().unlock()
eRCInput.getInstance().unlock()
if data == 0 or strIsEmpty(data):
data = ""
"""
def __init__(self, session, url=None, cbf=None, useAIT=False, profile=0):
self._session = session
+ fbClass.getInstance().lock()
eRCInput.getInstance().lock()
Screen.__init__(self, session)
if self._cb_closed_func is not None:
self._cb_closed_func()
except: pass
+ fbClass.getInstance().unlock()
eRCInput.getInstance().unlock()
self.close()
print "Check Browser Running ERR :", ErrMsg
return False
+ def doChangeChannel(self, _sid, _tsid):
+ root = eServiceReference(service_types_tv)
+ if root is None:
+ return False
+ serviceList = eServiceCenter.getInstance().list(root)
+ if serviceList is None:
+ return False
+ while True:
+ service = serviceList.getNext()
+ if service is None or not service.valid():
+ break
+
+ #1:0:19:2840:3FB:1:C00000:0:0:0:
+ serviceRef = service.toString()
+ if strIsEmpty(serviceRef):
+ continue
+ serviceRefItems = serviceRef.split(":")
+ if len(serviceRefItems) < 5:
+ continue
+
+ sid = serviceRefItems[3]
+ tsid = serviceRefItems[4]
+ if sid == _sid and tsid == _tsid:
+ self._session.nav.playService(eServiceReference(serviceRef))
+ service = self._session.nav.getCurrentlyPlayingServiceReference()
+ setBeforeService(service)
+ return True
+ return False
+
class OperaBrowserSetting:
def __init__(self):
self._settingFileName = '/usr/local/hbb-browser/home/setting.ini'
self.menuItemUrl = None
self.menuItemName = None
+ self.menuEntryName = None
+ self.menuEntryTitle = None
+ self.menuEntryUrl = None
+
self.makeConfigList()
self.onLayoutFinish.append(self.layoutFinished)
def layoutFinished(self):
self.setTitle('Bookmark ' + self.mMode)
+
+ def selectedItem(self):
+ currentPosition = self["config"].getCurrent()
+ if self.mType == BookmarkEditWindow.CATEGORY:
+ return ("Name", self.menuItemName)
+ else:
+ if currentPosition == self.menuEntryTitle:
+ return ("Title", self.menuItemTitle)
+ elif currentPosition == self.menuEntryUrl:
+ return ("Url", self.menuItemUrl)
+ return None
+
+ def showMessageBox(self, text):
+ msg = "Invalid " + text + "!!(Empty)\nPlease, Input to the " + text + "."
+ self.mSession.openWithCallback(self.showVKeyWindow, MessageBox, msg, MessageBox.TYPE_INFO)
+ return False
+
+ def showVKeyWindow(self, data=None):
+ itemTitle = ""
+ itemValue = ""
+ selected = self.selectedItem()
+ if selected is not None:
+ itemValue = selected[1].value
+ if strIsEmpty(itemValue):
+ itemValue = ""
+ itemTitle = selected[0]
+
+ self.session.openWithCallback(self.cbVKeyWindow, VirtualKeyBoard, title=itemTitle, text=itemValue)
+
+ def cbVKeyWindow(self, data=None):
+ if data is not None:
+ selected = self.selectedItem()
+ if selected is not None:
+ selected[1].setValue(data)
+
def saveData(self):
if self.mType == BookmarkEditWindow.CATEGORY:
if self.mMode == 'Add':
categoryName = self.menuItemName.value
if strIsEmpty(categoryName):
- msg = "Invalid Category Name!!(Empty)\nPlease, Input to the Category Name."
- self.mSession.open(MessageBox, msg, MessageBox.TYPE_INFO)
- return False
+ return self.showMessageBox("Category Name")
self.mBookmarkManager.addCategory(categoryName)
else:
if strIsEmpty(self.menuItemName.value):
- msg = "Invalid Category Name!!(Empty)\nPlease, Input to the Category Name."
- self.mSession.open(MessageBox, msg, MessageBox.TYPE_INFO)
- return False
+ return self.showMessageBox("Category Name")
self.mData.mName = self.menuItemName.value
self.mBookmarkManager.updateCategory(self.mData)
else:
bookmarkTitle = self.menuItemTitle.value
bookmarkUrl = self.menuItemUrl.value
if strIsEmpty(bookmarkTitle):
- msg = "Invalid Bookmark Title!!(Empty)\nPlease input to the Bookmark Title."
- self.mSession.open(MessageBox, msg, MessageBox.TYPE_INFO)
- return False
+ self["config"].setCurrentIndex(0)
+ return self.showMessageBox("Bookmark Title")
+ if strIsEmpty(bookmarkUrl):
+ self["config"].setCurrentIndex(1)
+ return self.showMessageBox("Bookmark URL")
self.mBookmarkManager.addBookmark(bookmarkTitle, bookmarkUrl, self.mData.mParent)
else:
if strIsEmpty(self.menuItemTitle.value):
- msg = "Invalid Bookmark Title!!(Empty)\nPlease input to the Bookmark Title."
- self.mSession.open(MessageBox, msg, MessageBox.TYPE_INFO)
- return False
+ self["config"].setCurrentIndex(0)
+ return self.showMessageBox("Bookmark Title")
+ if strIsEmpty(self.menuItemUrl.value):
+ self["config"].setCurrentIndex(1)
+ return self.showMessageBox("Bookmark URL")
self.mData.mTitle = self.menuItemTitle.value
self.mData.mUrl = self.menuItemUrl.value
self.mBookmarkManager.updateBookmark(self.mData)
return True
+
def keyGreen(self):
if not self.saveData():
return
if self.mType == BookmarkEditWindow.CATEGORY:
self.menuItemName = ConfigText(default=self.mData.mName, visible_width=65, fixed_size=False)
- menuEntryName = getConfigListEntry(_("Name"), self.menuItemName)
- self.menulist.append(menuEntryName)
+
+ self.menuEntryName = getConfigListEntry(_("Name"), self.menuItemName)
+
+ self.menulist.append(self.menuEntryName)
else:
self.menuItemTitle = ConfigText(default=self.mData.mTitle, visible_width=65, fixed_size=False)
self.menuItemUrl = ConfigText(default=self.mData.mUrl, visible_width=65, fixed_size=False)
- menuEntryTitle = getConfigListEntry(_("Title"), self.menuItemTitle)
- menuEntryUrl = getConfigListEntry(_("Url"), self.menuItemUrl)
- self.menulist.append(menuEntryTitle)
- self.menulist.append(menuEntryUrl)
+
+ self.menuEntryTitle = getConfigListEntry(_("Title"), self.menuItemTitle)
+ self.menuEntryUrl = getConfigListEntry(_("Url"), self.menuItemUrl)
+
+ self.menulist.append(self.menuEntryTitle)
+ self.menulist.append(self.menuEntryUrl)
self["config"].list = self.menulist
self["config"].l.setList(self.menulist)
def keyBlue(self):
self.setHelpModeActions(self.MODE_KEYBOARD)
-_g_helper = None
class OperaBrowser(Screen):
MENUBAR_ITEM_WIDTH = 150
MENUBAR_ITEM_HEIGHT = 30
self._on_setPageTitle('Opera Browser')
self.enableRCMouse(False)
self.toggleMainScreen()
+ fbClass.getInstance().unlock()
eRCInput.getInstance().unlock()
self._terminatedBrowser = True
self._enableKeyEvent = True
command_server.onHbbTVCloseCB.append(self._on_close_window)
self.toggleMainScreen()
self.enableRCMouse(True)
+ fbClass.getInstance().lock()
eRCInput.getInstance().lock()
command_util = getCommandUtil()
command_util.sendCommand('OP_BROWSER_OPEN_URL', data)
def keyCancel(self):
if not self._terminatedBrowser:
#self._session.openWithCallback(self._cb_virtualKeyboardClosed, VirtualKeyBoard, title=("Please enter URL here"), text="")
+ fbClass.getInstance().lock()
eRCInput.getInstance().lock()
if self.toggleListViewFlag:
self.toggleMainScreen()
command_server.stop()
def session_start_main(session, reason, **kwargs):
+ fbClass.getInstance().unlock()
eRCInput.getInstance().unlock()
global _g_helper
_g_helper = session.open(HbbTVHelper)