- def keyGreen(self):
- if not self.saveData():
- return
- self.close(True)
- def keyRed(self):
- self.close(False)
- def keyLeft(self):
- ConfigListScreen.keyLeft(self)
- def keyRight(self):
- ConfigListScreen.keyRight(self)
- def makeConfigList(self):
- self.menulist = []
-
- if self.mType == BookmarkEditWindow.CATEGORY:
- self.menuItemName = ConfigText(default=self.mData.mName, visible_width=65, fixed_size=False)
-
- 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)
-
- 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)
-
-class OperaBrowserBookmarkWindow(Screen):
- skin = """
- <screen name="HbbTVBrowserBookmarkWindow" position="center,120" size="600,400" title="Bookmark" >
- <widget name="bookmarklist" position="0,0" size="600,200" zPosition="10" scrollbarMode="showOnDemand" />
-
- <ePixmap pixmap="skin_default/buttons/key_0.png" position="556,330" size="35,30" alphatest="on" />
- <widget source="key_0" render="Label" position="258,330" zPosition="1" size="300,30" font="Regular;20" halign="right" valign="center"/>
-
- <ePixmap pixmap="skin_default/buttons/red.png" position="5,360" size="140,40" alphatest="on" />
- <ePixmap pixmap="skin_default/buttons/green.png" position="155,360" size="140,40" alphatest="on" />
- <ePixmap pixmap="skin_default/buttons/yellow.png" position="305,360" size="140,40" alphatest="on" />
- <ePixmap pixmap="skin_default/buttons/blue.png" position="450,360" size="140,40" alphatest="on" />
-
- <widget source="key_red" render="Label" position="5,360" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" foregroundColor="#ffffff" transparent="1" />
- <widget source="key_green" render="Label" position="155,360" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" foregroundColor="#ffffff" transparent="1" />
- <widget source="key_yellow" render="Label" position="305,360" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" foregroundColor="#ffffff" transparent="1" />
- <widget source="key_blue" render="Label" position="450,360" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#18188b" foregroundColor="#ffffff" transparent="1" />
- </screen>
- """
-
- def __init__(self, _session, _url=None, _title=None):
- self.mUrl = _url
- self.mTitle = _title
- self.mBookmarkManager = BookmarkManager.getInstance()
- self.mSession = _session
- Screen.__init__(self, _session)
- self["actions"] = ActionMap(["DirectionActions", "OkCancelActions","ColorActions", "NumberActions"], {
- "ok" : self.keyOK,
- "cancel": self.keyCancel,
- "red" : self.keyRed,
- "green" : self.keyGreen,
- "yellow": self.keyYellow,
- "blue" : self.keyBlue,
- "0" : self.keyNumber,
- },-2)
-
- self["key_red"] = StaticText(_("Exit"))
- self["key_green"] = StaticText(_("Add"))
- self["key_yellow"] = StaticText(_("Edit"))
- self["key_blue"] = StaticText(_("Delete"))
- self["key_0"] = StaticText(_("Set as Startpage"))
-
- self.mBookmarkList = self.setBookmarkList()
- self["bookmarklist"] = MenuList(self.mBookmarkList)
-
- self.onLayoutFinish.append(self.layoutFinished)
-
- def layoutFinished(self):
- self.setTitle(_('Bookmark'))
-
- def setBookmarkList(self):
- l = []
- #self.mBookmarkManager.dump()
- cd = self.mBookmarkManager.getBookmarkRoot()
- for ck in cd.iterkeys():
- l.append(('# ' + cd[ck].mName, cd[ck]))
- bd = cd[ck].mBookmarks
- for bk in bd.iterkeys():
- l.append((' - ' + bd[bk].mTitle, bd[bk]))
- return l
- def updateBookmarkList(self):
- self.mBookmarkList = self.setBookmarkList()
- self["bookmarklist"].setList(self.mBookmarkList)
- def cbEditWindow(self, ret=False):
- if not ret:
- return
- self.updateBookmarkList()
- def getParentCategory(self):
- idx = self["bookmarklist"].getSelectedIndex()
- try:
- while idx >= 0:
- data = self.mBookmarkList[idx][0].strip()
- if data[0] == '#':
- return self.mBookmarkList[idx][1]
- idx -= 1
- except: pass
- return None
- def isCategoryItem(self):
- try:
- head = self["bookmarklist"].getCurrent()[0].strip()
- if head[0] == '#':
- return True
- except: pass
- return False
- def keyNumber(self):
- data = self["bookmarklist"].getCurrent()[1]
- if strIsEmpty(data.mUrl):
- msg = _("Invalid URL. Please check again!!")
- self.mSession.open(MessageBox, msg, MessageBox.TYPE_INFO)
- return
- def cbSetStartpage(ret=None):
- if ret is None: return
- if ret:
- data = self["bookmarklist"].getCurrent()[1]
- OperaBrowserSetting().setData(data.mUrl, data.mType)
- msg = _("Do you want to set selected url to the Startpage?")
- self.mSession.openWithCallback(cbSetStartpage, MessageBox, msg, MessageBox.TYPE_YESNO, default=True)
-
- def keyGreen(self):
- def cbGreen(data):
- if data is None:
- return
- if data[1] == 1:
- parent = self.getParentCategory()
- if parent is None:
- return
- if strIsEmpty(self.mTitle):
- return
- retAdd = self.mBookmarkManager.addBookmark(self.mTitle, self.mUrl, parent.mId, 0)
- if not retAdd:
- msg = _("Current page is already exist.")
- self.mSession.open(MessageBox, msg, MessageBox.TYPE_INFO)
- self.cbEditWindow(True)
- elif data[1] == 2:
- parent = self.getParentCategory()
- if parent is None:
- return
- b = BookmarkData(0, '', '', parent.mId, 0)
- self.mSession.openWithCallback(self.cbEditWindow, BookmarkEditWindow, _('Add'), BookmarkEditWindow.BOOKMARK, b, self.mBookmarkManager)
- elif data[1] == 3:
- c = CategoryData(0, '')
- self.mSession.openWithCallback(self.cbEditWindow, BookmarkEditWindow, _('Add'), BookmarkEditWindow.CATEGORY, c, self.mBookmarkManager)
- if strIsEmpty(self.mUrl):
- l = [(_('Direct Input(Bookmark)'),2,), (_('Direct Input(Category)'),3,)]
- else: l = [(_('Currentpage(Bookmark)'),1,), (_('Direct Input(Bookmark)'),2,), (_('Direct Input(Category)'),3,)]
- self.mSession.openWithCallback(cbGreen, ChoiceBox, title=_("Please choose."), list=l)
- def keyYellow(self):
- data = self["bookmarklist"].getCurrent()[1]
- if self.isCategoryItem():
- self.mSession.openWithCallback(self.cbEditWindow, BookmarkEditWindow, _('Edit'), BookmarkEditWindow.CATEGORY, data, self.mBookmarkManager)
- else: self.mSession.openWithCallback(self.cbEditWindow, BookmarkEditWindow, _('Edit'), BookmarkEditWindow.BOOKMARK, data, self.mBookmarkManager)
- def keyBlue(self):
- def cbBlue(ret=None):
- if not ret: return
- data = self["bookmarklist"].getCurrent()[1]
- if self.isCategoryItem():
- self.mBookmarkManager.deleteCategory(data.mId)
- else: self.mBookmarkManager.deleteBookmark(data.mId)
- self.updateBookmarkList()
- if self.isCategoryItem():
- msg = _("Do you want to delete the category and the bookmarks?")
- else: msg = _("Do you want to delete the bookmark?")
- self.mSession.openWithCallback(cbBlue, MessageBox, msg, MessageBox.TYPE_YESNO, default=True)
- def keyOK(self):
- if self.isCategoryItem(): return
-
- data = self["bookmarklist"].getCurrent()[1]
- url = data.mUrl.strip()
- if len(url) == 0:
- self.session.open(MessageBox, _("Can't open selected bookmark.\n - URL data is empty!!"), type = MessageBox.TYPE_INFO)
- return
- mode = data.mType
- if mode:
- lang = language.getLanguage()
- if lang == 'ru_RU' and os.path.exists('/usr/local/manual/ru_RU'):
- url = '/usr/local/manual/ru_RU/main.html'
- elif lang == 'de_DE' and os.path.exists('/usr/local/manual/de_DE'):
- url = '/usr/local/manual/de_DE/main.html'
- self.close((url, mode))
- def keyRed(self):
- self.keyCancel()
- def keyCancel(self):
- self.close()
-
-class BrowserHelpWindow(Screen, HelpableScreen):
- MODE_GLOBAL,MODE_KEYBOARD,MODE_MOUSE = 1,2,3
- skin = """
- <screen name="BrowserHelpWindow" position="center,center" size="600,40" title="Browser Help" >
- <ePixmap pixmap="skin_default/buttons/red.png" position="5,0" size="140,40" alphatest="on" />
- <ePixmap pixmap="skin_default/buttons/green.png" position="155,0" size="140,40" alphatest="on" />
- <ePixmap pixmap="skin_default/buttons/yellow.png" position="305,0" size="140,40" alphatest="on" />
- <ePixmap pixmap="skin_default/buttons/blue.png" position="450,0" size="140,40" alphatest="on" />
-
- <widget source="key_red" render="Label" position="5,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" foregroundColor="#ffffff" transparent="1" />
- <widget source="key_green" render="Label" position="155,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" foregroundColor="#ffffff" transparent="1" />
- <widget source="key_yellow" render="Label" position="305,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" foregroundColor="#ffffff" transparent="1" />
- <widget source="key_blue" render="Label" position="450,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#18188b" foregroundColor="#ffffff" transparent="1" />
- </screen>
- """
- def __init__(self, session):
- Screen.__init__(self, session)
- HelpableScreen.__init__(self)
-
- self["key_red"] = StaticText(_("Exit"))
- self["key_green"] = StaticText(_("Global"))
- self["key_yellow"] = StaticText(_("Mouse"))
- self["key_blue"] = StaticText(_("Keyboard"))
-
- self["actions"] = ActionMap(["DirectionActions", "OkCancelActions","ColorActions"], {
- "ok" : self.keyRed,
- "cancel": self.keyRed,
- "red" : self.keyRed,
- "green" : self.keyGreen,
- "yellow": self.keyYellow,
- "blue" : self.keyBlue,
- },-2)
-
- self.showHelpTimer = eTimer()
- self.showHelpTimer.callback.append(self.cbShowHelpTimerClosed)
- self.showHelpTimer.start(500)
-
- self.onLayoutFinish.append(self.layoutFinished)
-
- def layoutFinished(self):
- self.setTitle(_('Browser Help'))
-
- def cbShowHelpTimerClosed(self):
- self.showHelpTimer.stop()
- self.setHelpModeActions(self.MODE_GLOBAL)
-
- def setHelpModeActions(self, _mode=0):
- self.helpList = []
- if _mode == self.MODE_GLOBAL:
- self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions", {
- "cancel" : (self.keyPass, _("Exit the Opera browser.")),
- })
- self["MenuActions"] = HelpableActionMap(self, "MenuActions", {
- "menu" : (self.keyPass, _("Show the Menu window.")),
- })
- self["ColorActions"] = HelpableActionMap(self, "ColorActions", {
- "green" : (self.keyPass, _("Enter Key")),
- "yellow" : (self.keyPass, _("Show the Virtual keyboard window.")),
- "blue" : (self.keyPass, _("Backspace Key")),
- })
- self["EPGSelectActions"] = HelpableActionMap(self, "EPGSelectActions", {
- "info" : (self.keyPass, _("Switch to keyboard/mouse mode.")),
- })
-
- elif _mode == self.MODE_MOUSE:
- self["DirectionActions"] = HelpableActionMap(self, "DirectionActions", {
- "up" : (self.keyPass, _("It will move the mouse pointer up.")),
- "down" : (self.keyPass, _("It will move the mouse pointer down.")),
- "left" : (self.keyPass, _("It will move the mouse pointer left.")),
- "right" : (self.keyPass, _("It will move the mouse pointer right.")),
- })
- self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions", {
- "ok" : (self.keyPass, _("Left Mouse Button")),
- })
- self["EPGSelectActions"] = HelpableActionMap(self, "EPGSelectActions", {
- "nextBouquet" : (self.keyPass, _("Right Mouse Button")),
- "nextService" : (self.keyPass, _("Left Key")),
- "prevService" : (self.keyPass, _("Right Key")),
- })
- elif _mode == self.MODE_KEYBOARD:
- self["DirectionActions"] = HelpableActionMap(self, "DirectionActions", {
- "up" : (self.keyPass, _("Up Key")),
- "down" : (self.keyPass, _("Down Key")),
- "left" : (self.keyPass, _("Left Key")),
- "right" : (self.keyPass, _("Right Key")),
- })
- self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions", {
- "ok" : (self.keyPass, _("Enter Key")),
- })
- self["EPGSelectActions"] = HelpableActionMap(self, "EPGSelectActions", {
- "nextBouquet" : (self.keyPass, _("PageUp Key")),
- "prevBouquet" : (self.keyPass, _("PageDown Key")),
- "nextService" : (self.keyPass, _("Go to previous page.")),
- "prevService" : (self.keyPass, _("Go to next page.")),
- })
-
- if _mode > 0:
- self.showHelp()
-
- def keyPass(self):
- pass
-
- def keyRed(self):
- self.close()
- def keyGreen(self):
- self.setHelpModeActions(self.MODE_GLOBAL)
- def keyYellow(self):
- self.setHelpModeActions(self.MODE_MOUSE)
- def keyBlue(self):
- self.setHelpModeActions(self.MODE_KEYBOARD)
-
-class OperaBrowser(Screen):
- MENUBAR_ITEM_WIDTH = 150
- MENUBAR_ITEM_HEIGHT = 30
- SUBMENULIST_WIDTH = 200
- 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
-
- size = getDesktop(0).size()
- WIDTH = int(size.width())
- HEIGHT = int(size.height())
- skin = """
- <screen name="OperaBrowser" position="0,0" size="%(width)d,%(height)d" backgroundColor="transparent" flags="wfNoBorder" title="Opera Browser">
- <widget name="topArea" zPosition="-1" position="0,0" size="1280,60" font="Regular;20" valign="center" halign="center" backgroundColor="#000000" />
- <widget name="menuitemFile" position="30,20" size="150,30" font="Regular;20" valign="center" halign="center" backgroundColor="#000000" foregroundColors="#9f1313,#a08500" />
- <widget name="menuitemTool" position="180,20" size="150,30" font="Regular;20" valign="center" halign="center" backgroundColor="#000000" foregroundColors="#9f1313,#a08500" />
- <widget name="menuitemHelp" position="330,20" size="150,30" font="Regular;20" valign="center" halign="center" backgroundColor="#000000" foregroundColors="#9f1313,#a08500" />
- <widget name="menulist" position="50,60" size="200,150" backgroundColor="#000000" zPosition="10" scrollbarMode="showOnDemand" />
- <widget name="submenulist" position="252,60" size="200,150" backgroundColor="#000000" zPosition="10" scrollbarMode="showOnDemand" />
- <widget name="bottomArea" position="0,%(bottom_pos_y)d" size="%(bottom_size_x)d,80" font="Regular;20" valign="center" halign="center" backgroundColor="#000000" />
- </screen>
- """ % { 'width' :WIDTH,
- 'height' :HEIGHT,
- 'bottom_pos_y' :HEIGHT-80,
- 'bottom_size_x' :WIDTH }
-
- COMMAND_MAP = {}
- MENUITEMS_LIST =[]
- def __init__(self, session, url=None, isWebAppMode=False):
- Screen.__init__(self, session)
- self["actions"] = ActionMap(["DirectionActions", "MenuActions", "OkCancelActions"], {
- "cancel" : self.keyCancel
- ,"ok" : self.keyOK
- ,"left" : self.keyLeft
- ,"right" : self.keyRight
- ,"up" : self.keyUp
- ,"down" : self.keyDown
- ,"menu" : self.keyMenu
- }, -2)
-
- self.UpdateLanguageCB()
-
- self._terminatedBrowser = True
- self._enableKeyEvent = True
- self._currentPageUrl = None
- self._currentPageTitle = None
- self.menubarCurrentIndex = 0
- self.lvMenuItems = []
- self.lvSubMenuItems = []
-
- self["topArea"] = Label()
- self["bottomArea"] = Label()
-
- self["menuitemFile"] = MultiColorLabel()# modify menu
- self["menuitemTool"] = MultiColorLabel()
- self["menuitemHelp"] = MultiColorLabel()
-
- self["menulist"] = MenuList(self.setListOnView())
- self["submenulist"] = MenuList(self.setSubListOnView())
-
- self.toggleMainScreenFlag = True
- self.toggleListViewFlag = False
- self.toggleSubListViewFlag = False
- self.currentListView = self["menulist"]
-
- self.onLayoutFinish.append(self.layoutFinished)
-
- self._onCloseTimer = eTimer()
- self._onCloseTimer.callback.append(self._cb_onClose)
-
- self.paramUrl = url
- self.paramIsWebAppMode = isWebAppMode
- language.addCallback(self.UpdateLanguageCB)
-
- def UpdateLanguageCB(self):
- # modify menu
- self.MENUITEMS_LIST = [
- [(_('Open Startpage'), None), (_('Open URL'), None), (_('Start/Stop'),None), (_('Exit'), None)],
- [(_('Bookmark'), None), (_('Preference'), None)],
- [(_('About'), None), (_('Help'), None)]]
- self.COMMAND_MAP = {}
- self.COMMAND_MAP[_('Exit')] = self._cmd_on_Exit
- self.COMMAND_MAP[_('Help')] = self._cmd_on_Help
- self.COMMAND_MAP[_('About')] = self._cmd_on_About
- self.COMMAND_MAP[_('Open URL')] = self._cmd_on_OpenUrl
- self.COMMAND_MAP[_('Start/Stop')] = self._cmd_on_StartStop
- self.COMMAND_MAP[_('Bookmark')] = self._cmd_on_Bookmark
- self.COMMAND_MAP[_('Preference')] = self._cmd_on_Preference
- self.COMMAND_MAP[_('Return')] = self._cmd_on_ReturnToBrowser
- self.COMMAND_MAP[_('Open Startpage')] = self._cmd_on_OpenStartpage
-
- def enableRCMouse(self, mode): #mode=[0|1]|[False|True]
- rcmouse_path = "/proc/stb/fp/mouse"
- if os.path.exists(rcmouse_path):
- os.system("echo %d > %s" % (mode, rcmouse_path))
-
- def layoutFinished(self):
- self["menuitemFile"].setText(_("File"))# modify menu
- self["menuitemTool"].setText(_("Tools"))
- self["menuitemHelp"].setText(_("Help"))
-
- self["menulist"].hide()
- self["submenulist"].hide()
-
- self["bottomArea"].setText(_("Opera Web Browser Plugin v1.0"))
- self.setTitle(_("BrowserMain"))
- self.selectMenuitem()
-
- if self.paramUrl is not None:
- self.keyMenu()
- if self.paramIsWebAppMode:
- self.cbUrlText(data=self.paramUrl, mode=1, opcode='OP_BROWSER_OPEN_YOUTUBETV')
- else: self.cbUrlText(data=self.paramUrl, mode=1)
-
- def selectMenuitem(self):
- tmp = [self["menuitemFile"], self["menuitemTool"], self["menuitemHelp"]]# modify menu
- self["menuitemFile"].setForegroundColorNum(0)
- self["menuitemTool"].setForegroundColorNum(0)
- self["menuitemHelp"].setForegroundColorNum(0)
- tmp[self.menubarCurrentIndex].setForegroundColorNum(1)
-
- def popupCloseAll(self):
- self.keyLeft()
- self.keyLeft()
- self.keyUp()
- self.keyCancel()
-
- def setListOnView(self):
- l = self.MENUITEMS_LIST[self.menubarCurrentIndex]
- if not self._terminatedBrowser and self.menubarCurrentIndex == 0: # running
- l = [(_('Return'), None)]
- self.lvMenuItems = l #self.MENUITEMS_LIST[self.menubarCurrentIndex]
- return self.lvMenuItems
-
- def setSubListOnView(self):
- self.lvSubMenuItems = []
- xl = self["menulist"].getCurrent()[1]
- if xl is None: return []
- for x in xl:
- self.lvSubMenuItems.append((x,None))
- return self.lvSubMenuItems
-
- def toggleMainScreen(self):
- if not self.toggleMainScreenFlag:
- self.show()
- else: self.hide()
- self.toggleMainScreenFlag = not self.toggleMainScreenFlag
-
- def toggleListView(self):
- if not self.toggleListViewFlag:
- self["menulist"].show()
- else: self["menulist"].hide()
- self.toggleListViewFlag = not self.toggleListViewFlag
-
- def toggleSubListView(self):
- if not self.toggleSubListViewFlag:
- self["submenulist"].show()
- else: self["submenulist"].hide()
- self.toggleSubListViewFlag = not self.toggleSubListViewFlag
-
- def setCurrentListView(self, listViewIdx):
- if listViewIdx == 0:
- self.currentListView = None
- elif listViewIdx == 1:
- self.currentListView = self["menulist"]
- elif listViewIdx == 2:
- self.currentListView = self["submenulist"]
-
- def _cb_onClose(self):
- self._onCloseTimer.stop()
- command_server = getCommandServer()
- try:
- if self._on_close_window in command_server.onHbbTVCloseCB:
- command_server.onHbbTVCloseCB.remove(self._on_close_window)
- except Exception, ErrMsg: pass