def __init__(self, session, params): self.session = session self.markerWidth = 100 self.skin = """ <screen position="center,center" title="%s" size="500,200"> <widget name="statustext" position="5,5" zPosition="1" size="490,60" font="Regular;24" transparent="1" halign="center" valign="center" backgroundColor="black"/> <widget name="marker" zPosition="4" position="5,75" size="100,100" transparent="1" alphatest="blend" /> <widget name="cover_0" zPosition="2" position="10,80" size="90,90" transparent="1" alphatest="blend" /> <widget name="cover_1" zPosition="2" position="115,80" size="90,90" transparent="1" alphatest="blend" /> <widget name="cover_2" zPosition="2" position="220,80" size="90,90" transparent="1" alphatest="blend" /> <widget name="cover_3" zPosition="2" position="325,80" size="90,90" transparent="1" alphatest="blend" /> <widget name="cover" zPosition="2" position="430,80" size="65,68" transparent="1" alphatest="blend" /> </screen>""" % (params.get('title', '')) Screen.__init__(self, session) self["actions"] = ActionMap( ["WizardActions", "DirectionActions", "ColorActions"], { "left": self.keyLeft, "right": self.keyRight, "ok": self.keyOK, "back": self.keyCancel, }, -1) self["statustext"] = Label(params.get('challenge', '')) self.markerPixmap = LoadPixmap(GetIconDir('markerCaptchaV2.png')) self.iconList = params.get('icon_list') for i in range(4): strIndx = "cover_%d" % i self[strIndx] = Cover2() self['cover'] = Cover2() self["marker"] = Cover3() self.selIdx = 0 self.maxIcons = len(self.iconList) - 1 self.onLayoutFinish.append(self.onStart)
def __init__(self, session, autoStart=False): printDBG( "IPTVUpdateMainWindow.__init__ -------------------------------") Screen.__init__(self, session) self["sub_title"] = Label(_(" ")) self["info_field"] = Label(_(" ")) self["actions"] = ActionMap(["SetupActions", "ColorActions"], { "cancel": self.cancelPressed, "ok": self.startPressed, }, -1) try: for idx in range(5): spinnerName = "spinner" if idx: spinnerName += '_%d' % idx self[spinnerName] = Cover3() except Exception: printExc() self.spinnerPixmap = [ LoadPixmap(GetIconDir('radio_button_on.png')), LoadPixmap(GetIconDir('radio_button_off.png')) ] self.onClose.append(self.__onClose) #self.onLayoutFinish.append(self.onStart) self.onShow.append(self.onStart) #flags self.autoStart = autoStart self.underCloseMessage = False self.underClosing = False self.deferredAction = None self.started = False self.setupImpl = IPTVSetupImpl(self.finished, self.chooseQuestion, self.showMessage, self.setInfo)
def __init__(self, session, imgFilePath, message, title, additionalParams={}): printDBG( "UnCaptchaReCaptchaWidget.__init__ --------------------------") self.params = additionalParams self.imgFilePath = imgFilePath self.numOfRow = self.params.get('rows', 3) self.numOfCol = self.params.get('cols', 3) self.markerWidth = self.params.get('marker_width', 100) self.markerHeight = self.params.get('marker_height', 100) self.offsetCoverX = 100 self.offsetCoverY = 100 windowWidth = self.markerWidth * self.numOfCol + self.offsetCoverX * 2 windowHeight = self.markerWidth * self.numOfRow + self.offsetCoverY + 70 coversSkin = '' self.coversSelection = [] for x in range(self.numOfCol): self.coversSelection.append([]) for y in range(self.numOfRow): coversSkin += """<widget name="cover_%s%s" zPosition="5" position="%d,%d" size="%d,%d" transparent="1" alphatest="blend" />""" % ( x, y, (self.offsetCoverX + self.markerWidth * x), # pos X image (self.offsetCoverY + self.markerHeight * y), # pos Y image self.markerWidth, self.markerHeight) self.coversSelection[x].append( False) # at start no icon is selected self.skin = """ <screen position="center,center" size="%d,%d" title="%s"> <widget name="statustext" position="0,10" zPosition="2" size="%d,80" valign="center" halign="center" font="Regular;22" transparent="1" /> <widget name="puzzle_image" position="%d,%d" size="%d,%d" zPosition="3" transparent="1" alphatest="blend" /> <widget name="marker" position="%d,%d" size="%d,%d" zPosition="4" transparent="1" alphatest="blend" /> <widget name="accept" position="10,%d" zPosition="2" size="%d,50" valign="center" halign="center" font="Regular;22" foregroundColor="#00FFFFFF" backgroundColor="#FFFFFFFF" /> %s </screen> """ % ( windowWidth, windowHeight, title, windowWidth, self.offsetCoverX, # puzzle x self.offsetCoverY, # puzzle y self.markerWidth * self.numOfCol, # puzzle image width self.markerHeight * self.numOfRow, # puzzle image height self.offsetCoverX, self.offsetCoverY, self.markerWidth, self.markerHeight, self.offsetCoverY + self.markerWidth * self.numOfCol + 10, windowWidth - 20, coversSkin) self.session = session Screen.__init__(self, session) self["actions"] = ActionMap( ["WizardActions", "DirectionActions", "ColorActions"], { "left": self.keyLeft, "right": self.keyRight, "up": self.keyUp, "down": self.keyDown, "ok": self.keyOK, "back": self.keyCancel, }, -1) self.markerPixmap = LoadPixmap(GetIconDir('markerCaptchaV2.png')) self.selectPixmap = LoadPixmap(GetIconDir('selectCaptchaV2.png')) self["statustext"] = Label(str(message)) self["accept"] = Label(self.params.get('accep_label', _("Verify"))) self['puzzle_image'] = Cover2() self["marker"] = Cover3() for x in range(self.numOfCol): for y in range(self.numOfRow): strIndex = "cover_%s%s" % (x, y) self[strIndex] = Cover3() self.currX = 0 self.currY = 0 self.focusOnAcceptButton = False self.onLayoutFinish.append(self.onStart)
def __init__(self, session, params={}): # Skin generator maxWidth = 0 pX = 40 pY = 60 dY = 10 skinItems = '' self.icons = [] self.list = params['list'] self.withAcceptButton = params.get('with_accept_button', False) self.statusText = params.get('status_text', '') statusTextHight = params.get('status_text_hight', 80) # calcl maxWidth size for idx in range(len(self.list)): item = self.list[idx] if item['label_size'][0] > maxWidth: maxWidth = item['label_size'][0] if item['input_size'][0] > maxWidth: maxWidth = item['input_size'][0] maxWidth += pX * 2 if len(self.statusText): skinItems = '<widget name="statustext" position="10,%d" zPosition="2" size="%d,%d" valign="center" halign="center" font="Regular;22" transparent="1" />' % (pY + dY, maxWidth - 20, statusTextHight) pY += statusTextHight + dY * 2 for idx in range(len(self.list)): item = self.list[idx] if 'icon_path' in item: self["cover_%d" % idx] = Cover2() self.icons.append({'name': "cover_%d" % idx, 'path': item['icon_path']}) else: self["text_%d" % idx] = Label(item.get('title', '')) self["input_%d" % idx] = Input(**item['input']) self["border_%d" % idx] = Label("") if item.get('useable_chars', None) is not None: self["input_%d" % idx].setUseableChars(item['useable_chars']) if 'icon_path' in item: skinItems += '<widget name="cover_%d" position="%d,%d" size="%d,%d" zPosition="8" />' % (idx, (maxWidth - item['label_size'][0]) / 2, pY, item['label_size'][0], item['label_size'][1]) else: skinItems += '<widget name="text_%d" position="%d,%d" size="%d,%d" font="%s" zPosition="2" />' % (idx, 10, pY, item['label_size'][0], item['label_size'][1], item['label_font']) pY += dY + item['label_size'][1] skinItems += '<widget name="input_%d" position="%d,%d" size="%d,%d" font="%s" zPosition="2" />' % (idx, pX, pY, item['input_size'][0], item['input_size'][1], item['input_font']) skinItems += '<widget name="border_%d" position="%d,%d" size="%d,%d" font="%s" zPosition="1" transparent="0" backgroundColor="#331F93B9" />' % (idx, pX - 5, pY - 5, item['input_size'][0] + 10, item['input_size'][1] + 10, item['input_font']) if 0 == idx: self['marker'] = Cover3() skinItems += '<widget name="marker" zPosition="2" position="10,%d" size="16,16" transparent="1" alphatest="blend" />' % (pY + (item['input_size'][1] - 16) / 2) skinItems += '<widget name="marker_%d" zPosition="1" position="10,%d" size="16,16" transparent="1" alphatest="blend" />' % (idx, pY + (item['input_size'][1] - 16) / 2) self['marker_%d' % idx] = Cover3() pY += dY * 2 + item['input_size'][1] if self.withAcceptButton: skinItems += '<widget name="accept_button" position="10,%d" zPosition="2" size="%d,50" valign="center" halign="center" font="Regular;22" foregroundColor="#00FFFFFF" backgroundColor="#320F0F0F" />' % (pY, maxWidth - 20) pY += dY * 2 + 50 self.skin = """ <screen name="IPTVMultipleInputBox" position="center,center" size="%d,%d" title="%s"> <widget name="key_red" position="10,10" zPosition="2" size="%d,35" valign="center" halign="left" font="Regular;22" transparent="1" foregroundColor="red" /> <widget name="key_ok" position="10,10" zPosition="2" size="%d,35" valign="center" halign="center" font="Regular;22" transparent="1" foregroundColor="white" /> <widget name="key_green" position="10,10" zPosition="2" size="%d,35" valign="center" halign="right" font="Regular;22" transparent="1" foregroundColor="green" /> %s </screen> """ % (maxWidth, pY, params.get('title', _("Input")), maxWidth - 20, maxWidth - 20, maxWidth - 20, skinItems) self["key_green"] = Label(params.get('accep_label', _("Save"))) self["key_ok"] = Label(_("OK")) self["key_red"] = Label(_("Cancel")) if len(self.statusText): self["statustext"] = Label(str(self.statusText)) if self.withAcceptButton: self["accept_button"] = Label(params.get('accep_label', _("Verify"))) self.params = params Screen.__init__(self, session) self.onShown.append(self.onStart) self.onClose.append(self.__onClose) self["actions"] = NumberActionMap(["ColorActions", "WizardActions", "InputBoxActions", "InputAsciiActions", "KeyboardInputActions"], { "gotAsciiCode": self.gotAsciiCode, "green": self.keySave, "ok": self.keyOK, "red": self.keyCancel, "back": self.keyCancel, "left": self.keyLeft, "right": self.keyRight, "up": self.keyUp, "down": self.keyDown, "right": self.keyRight, "home": self.keyHome, "end": self.keyEnd, "deleteForward": self.keyDelete, "deleteBackward": self.keyBackspace, "tab": self.keyTab, "toggleOverwrite": self.keyInsert, "1": self.keyNumberGlobal, "2": self.keyNumberGlobal, "3": self.keyNumberGlobal, "4": self.keyNumberGlobal, "5": self.keyNumberGlobal, "6": self.keyNumberGlobal, "7": self.keyNumberGlobal, "8": self.keyNumberGlobal, "9": self.keyNumberGlobal, "0": self.keyNumberGlobal }, -1) self.idx = 0 self.activeInput = "input_0" self.markerPixmap = [LoadPixmap(GetIconDir('radio_button_on.png')), LoadPixmap(GetIconDir('radio_button_off.png'))] self.started = False
def __init__(self, session, inList, outList, numOfLockedItems=0, groupName='', groupObj=None): printDBG( "PlayerSelectorWidget.__init__ --------------------------------") screenwidth = getDesktop(0).size().width() iconSize = GetAvailableIconSize() if len( inList ) >= 30 and iconSize == 100 and screenwidth and screenwidth > 1100: numOfRow = 4 numOfCol = 8 elif len(inList) > 16 and iconSize == 100: numOfRow = 4 numOfCol = 5 elif len(inList) > 12 and iconSize == 100: numOfRow = 4 numOfCol = 4 elif len(inList) > 9: if screenwidth and screenwidth == 1920: numOfRow = 4 numOfCol = 8 else: numOfRow = 3 numOfCol = 4 elif len(inList) > 6: numOfRow = 3 numOfCol = 3 elif len(inList) > 3: numOfRow = 2 numOfCol = 3 else: numOfRow = 1 numOfCol = 3 try: confNumOfRow = int(config.plugins.iptvplayer.numOfRow.value) confNumOfCol = int(config.plugins.iptvplayer.numOfCol.value) # 0 - means AUTO if confNumOfRow > 0: numOfRow = confNumOfRow if confNumOfCol > 0: numOfCol = confNumOfCol except Exception: pass # position of first img offsetCoverX = 25 if screenwidth and screenwidth == 1920: offsetCoverY = 100 else: offsetCoverY = 80 # image size coverWidth = iconSize coverHeight = iconSize # space/distance between images disWidth = int(coverWidth / 3) disHeight = int(coverHeight / 4) # marker size should be larger than img markerWidth = 45 + coverWidth markerHeight = 45 + coverHeight # position of first marker offsetMarkerX = offsetCoverX - (markerWidth - coverWidth) / 2 offsetMarkerY = offsetCoverY - (markerHeight - coverHeight) / 2 # how to calculate position of image with indexes indxX, indxY: #posX = offsetCoverX + (coverWidth + disWidth) * indxX #posY = offsetCoverY + (coverHeight + disHeight) * indxY # how to calculate position of marker for image with posX, posY #markerPosX = posX - (markerWidth - coverWidth)/2 #markerPosY = posY - (markerHeight - coverHeight)/2 tmpX = coverWidth + disWidth tmpY = coverHeight + disHeight self.numOfRow = numOfRow self.numOfCol = numOfCol # position of first cover self.offsetCoverX = offsetCoverX self.offsetCoverY = offsetCoverY # space/distance between images self.disWidth = disWidth self.disHeight = disHeight # image size self.coverWidth = coverWidth self.coverHeight = coverHeight # marker size should be larger than img self.markerWidth = markerWidth self.markerHeight = markerHeight self.inList = list(inList) self.currList = self.inList self.outList = outList self.groupName = groupName self.groupObj = groupObj self.numOfLockedItems = numOfLockedItems self.IconsSize = iconSize #do ladowania ikon self.MarkerSize = self.IconsSize + 45 self.lastSelection = PlayerSelectorWidget.LAST_SELECTION.get( self.groupName, 0) self.calcDisplayVariables() # pagination self.pageItemSize = 16 self.pageItemStartX = (offsetCoverX + tmpX * numOfCol + offsetCoverX - disWidth - self.numOfPages * self.pageItemSize) / 2 if screenwidth and screenwidth == 1920: self.pageItemStartY = 60 else: self.pageItemStartY = 40 if screenwidth and screenwidth == 1920: skin = """ <screen name="IPTVPlayerPlayerSelectorWidget" position="center,center" title="E2iPlayer %s" size="%d,%d"> <widget name="statustext" position="0,0" zPosition="1" size="%d,50" font="Regular;36" halign="center" valign="center" transparent="1"/> <widget name="marker" zPosition="2" position="%d,%d" size="%d,%d" transparent="1" alphatest="blend" /> <widget name="page_marker" zPosition="3" position="%d,%d" size="%d,%d" transparent="1" alphatest="blend" /> <widget name="menu" zPosition="3" position="%d,10" size="70,30" transparent="1" alphatest="blend" /> """ % ( GetIPTVPlayerVerstion(), offsetCoverX + tmpX * numOfCol + offsetCoverX - disWidth, # width of window offsetCoverY + tmpY * numOfRow + offsetCoverX - disHeight, # height of window offsetCoverX + tmpX * numOfCol + offsetCoverX - disWidth, # width of status line offsetMarkerX, offsetMarkerY, # first marker position markerWidth, markerHeight, # marker size self.pageItemStartX, self.pageItemStartY, # pagination marker self.pageItemSize, self.pageItemSize, offsetCoverX + tmpX * numOfCol + offsetCoverX - disWidth - 70, ) else: skin = """ <screen name="IPTVPlayerPlayerSelectorWidget" position="center,center" title="E2iPlayer %s" size="%d,%d"> <widget name="statustext" position="0,0" zPosition="1" size="%d,50" font="Regular;26" halign="center" valign="center" transparent="1"/> <widget name="marker" zPosition="2" position="%d,%d" size="%d,%d" transparent="1" alphatest="blend" /> <widget name="page_marker" zPosition="3" position="%d,%d" size="%d,%d" transparent="1" alphatest="blend" /> <widget name="menu" zPosition="3" position="%d,10" size="70,30" transparent="1" alphatest="blend" /> """ % ( GetIPTVPlayerVerstion(), offsetCoverX + tmpX * numOfCol + offsetCoverX - disWidth, # width of window offsetCoverY + tmpY * numOfRow + offsetCoverX - disHeight, # height of window offsetCoverX + tmpX * numOfCol + offsetCoverX - disWidth, # width of status line offsetMarkerX, offsetMarkerY, # first marker position markerWidth, markerHeight, # marker size self.pageItemStartX, self.pageItemStartY, # pagination marker self.pageItemSize, self.pageItemSize, offsetCoverX + tmpX * numOfCol + offsetCoverX - disWidth - 70, ) for y in range(1, numOfRow + 1): for x in range(1, numOfCol + 1): skinCoverLine = """<widget name="cover_%s%s" zPosition="4" position="%d,%d" size="%d,%d" transparent="1" alphatest="blend" />""" % ( x, y, (offsetCoverX + tmpX * (x - 1)), # pos X image (offsetCoverY + tmpY * (y - 1)), # pos Y image coverWidth, coverHeight) skin += '\n' + skinCoverLine # add pagination items for pageItemOffset in range(self.numOfPages): pageItemX = self.pageItemStartX + pageItemOffset * self.pageItemSize skinCoverLine = """<ePixmap zPosition="2" position="%d,%d" size="%d,%d" pixmap="%s" transparent="1" alphatest="blend" />""" % ( pageItemX, self.pageItemStartY, self.pageItemSize, self.pageItemSize, GetIconDir('radio_button_off.png')) skin += '\n' + skinCoverLine skin += '</screen>' self.skin = skin self.session = session Screen.__init__(self, session) self.session.nav.event.append(self.__event) self.onClose.append(self.__onClose) # load icons self.pixmapList = [] for idx in range(0, self.numOfItems): self.pixmapList.append( LoadPixmap( GetIconDir('PlayerSelector/' + self.currList[idx][1] + '%i.png' % self.IconsSize))) self.markerPixmap = LoadPixmap( GetIconDir('PlayerSelector/marker%i.png' % self.MarkerSize)) self.markerPixmapSel = LoadPixmap( GetIconDir('PlayerSelector/markerSel%i.png' % self.MarkerSize)) self.pageMarkerPixmap = LoadPixmap(GetIconDir('radio_button_on.png')) self.menuPixmap = LoadPixmap(GetIconDir('menu.png')) self["actions"] = ActionMap( [ "WizardActions", "DirectionActions", "ColorActions", "IPTVPlayerListActions" ], { "ok": self.ok_pressed, "back": self.back_pressed, "left": self.keyLeft, "right": self.keyRight, "up": self.keyUp, "down": self.keyDown, "blue": self.keyBlue, "menu": self.keyMenu, }, -1) self["marker"] = Cover3() self["page_marker"] = Cover3() self["menu"] = Cover3() for y in range(1, self.numOfRow + 1): for x in range(1, self.numOfCol + 1): strIndex = "cover_%s%s" % (x, y) self[strIndex] = Cover3() self["statustext"] = Label(self.currList[0][0]) self.onLayoutFinish.append(self.onStart) self.visible = True self.reorderingMode = False self.reorderingItemSelected = False
def __init__(self, session, title="", text="", additionalParams={}): self.session = session # autocomplete engine self.autocomplete = additionalParams.get('autocomplete') self.isAutocompleteEnabled = False self.searchHistory = additionalParams.get('search_history', []) self.skin = self.prepareSkin() Screen.__init__(self, session) self.onLayoutFinish.append(self.setGraphics) self.onShown.append(self.onWindowShow) self.onClose.append(self.__onClose) self["actions"] = NumberActionMap(["WizardActions", "DirectionActions", "ColorActions", "E2iPlayerVKActions", "KeyboardInputActions", "InputBoxActions", "InputAsciiActions"], { "gotAsciiCode": self.keyGotAscii, "ok": self.keyOK, "ok_repeat": self.keyOK, "back": self.keyBack, "left": self.keyLeft, "right": self.keyRight, "up": self.keyUp, "down": self.keyDown, "red": self.keyRed, "red_repeat": self.keyRed, "green": self.keyGreen, "yellow": self.keyYellow, "blue": self.keyBlue, "deleteBackward": self.backClicked, "deleteForward": self.forwardClicked, "pageUp": self.cursorRight, "pageDown": self.cursorLeft, "1": self.keyNumberGlobal, "2": self.keyNumberGlobal, "3": self.keyNumberGlobal, "4": self.keyNumberGlobal, "5": self.keyNumberGlobal, "6": self.keyNumberGlobal, "7": self.keyNumberGlobal, "8": self.keyNumberGlobal, "9": self.keyNumberGlobal, "0": self.keyNumberGlobal, }, -2) # Left list self['left_header'] = Label(" ") self['left_list'] = E2iVKSelectionList() # Right list if self.autocomplete: self['right_header'] = Label(" ") self['right_list'] = E2iVKSelectionList(False) self.isSuggestionVisible = None self.graphics = {} for key in ['pb', 'pr', 'pg', 'py', 'l', 'b', 'e', 'e_m', 'k', 'k_m', 'k_s', 'k2_m', 'k2_s', 'k3', 'k3_m']: self.graphics[key] = LoadPixmap(GetIconDir('e2ivk_hd/%s.png' if self.fullHD else 'e2ivk/%s.png') % key) for i in range(0, 63): self[str(i)] = Cover3() for key in ['l', 'b', 'e_m', 'k_m', 'k2_m', 'k3_m']: self[key] = Cover3() for i in range(1, 63): self['_%s' % i] = Label(" ") for m in range(6): self['m_%d' % m] = Label(" ") self.graphicsMap = {'0': 'e', '1': 'k_s', '15': 'k_s', '29': 'k_s', '57': 'k_s', '58': 'k_s', '60': 'k_s', '61': 'k_s', '62': 'k_s', '59': 'k3', '16': 'k2_s', '30': 'k2_s', '42': 'k2_s', '43': 'k2_s', '55': 'k2_s', '56': 'k2_s'} self.markerMap = {'0': 'e_m', '59': 'k3_m', '16': 'k2_m', '30': 'k2_m', '42': 'k2_m', '43': 'k2_m', '55': 'k2_m', '56': 'k2_m'} self.header = title if title else _('Enter the text') self.startText = text self["text"] = E2iInput(text="") self["header"] = Label(" ") self.colMax = len(self.KEYIDMAP[0]) self.rowMax = len(self.KEYIDMAP) self.rowIdx = 0 self.colIdx = 0 self.colors = {'normal': gRGB(int('ffffff', 0x10)), 'selected': gRGB(int('39b54a', 0x10)), 'deadkey': gRGB(int('0275a0', 0x10)), 'ligature': gRGB(int('ed1c24', 0x10)), 'inactive': gRGB(int('979697', 0x10))} self.specialKeyState = self.SK_NONE self.currentVKLayout = self.DEFAULT_VK_LAYOUT self.selectedVKLayoutId = config.plugins.iptvplayer.osk_layout.value self.vkRequestedId = additionalParams.get('vk_layout_id', '') self.deadKey = u'' self.focus = self.FOCUS_KEYBOARD
def __init__(self, session, url, pathForBuffering, pathForDownloading, movieTitle, activMoviePlayer, requestedBuffSize, playerAdditionalParams={}, downloadManager=None, fileExtension=''): self.session = session Screen.__init__(self, session) self.onStartCalled = False self.downloadingPath = pathForDownloading self.bufferingPath = pathForBuffering self.filePath = pathForBuffering + '/.iptv_buffering.flv' self.url = url self.movieTitle = movieTitle self.downloadManager = downloadManager self.fileExtension = fileExtension self.currentService = self.session.nav.getCurrentlyPlayingServiceReference( ) self.activMoviePlayer = activMoviePlayer self.onClose.append(self.__onClose) #self.onLayoutFinish.append(self.doStart) self.onShow.append(self.onWindowShow) #self.onHide.append(self.onWindowHide) self["actions"] = ActionMap( [ "IPTVAlternateVideoPlayer", "WizardActions", "MoviePlayerActions" ], { "ok": self.ok_pressed, "back": self.back_pressed, "leavePlayer": self.back_pressed, "record": self.record_pressed, }, -1) self["console"] = Label() self["percentage"] = Label() self["addinfo"] = Label() self['ok_button'] = Cover3() self['rec_button'] = Cover3() self['exit_button'] = Cover3() self["icon"] = SimpleAnimatedCover() # prepare icon frames path frames = [] for idx in range(1, self.NUM_OF_ICON_FRAMES + 1): frames.append( resolveFilename( SCOPE_PLUGINS, 'Extensions/IPTVPlayer/icons/buffering/buffering_%d.png' % idx)) self["icon"].loadFrames(frames) self.inMoviePlayer = False self.canRunMoviePlayer = False # used in function updateDisplay, so must be first initialized #main Timer self.mainTimer = eTimer() self.mainTimerEnabled = False self.mainTimer_conn = eConnectCallback(self.mainTimer.timeout, self.updateDisplay) self.mainTimerInterval = 1000 # by default 1s self.requestedBuffSize = requestedBuffSize self.playerAdditionalParams = playerAdditionalParams self.clipLength = None self.lastPosition = None self.lastSize = 0 # Some MP4 files are not prepared for streaming # MOOV atom is needed to start playback # if it is located at the end of file, then # will try to download it separately to start playback # without downloading the whole file self.clouldBeMP4 = False self.isMOOVAtomAtTheBeginning = None self.checkMOOVAtom = True self.maxMOOVAtomSize = 10 * 1024 * 1024 # 10 MB max moov atom size self.moovAtomOffset = 0 self.moovAtomSize = 0 self.MOOV_STS = enum(UNKNOWN=0, WAITING=1, DOWNLOADING=2, DOWNLOADED=3, ERROR=4) self.moovAtomStatus = self.MOOV_STS.UNKNOWN self.moovAtomDownloader = None self.moovAtomPath = pathForBuffering + '/.iptv_buffering_moov.flv' self.closeRequestedByUser = None printDBG(">> activMoviePlayer[%s]" % self.activMoviePlayer)
def __init__(self, session, params={}): # params: vk_title, movie_title printDBG("IPTVSubDownloaderWidget.__init__ desktop IPTV_VERSION[%s]\n" % (IPTVSubDownloaderWidget.IPTV_VERSION)) self.session = session path = GetSkinsDir(config.plugins.iptvplayer.skin.value) + "/subplaylist.xml" if os_path.exists(path): try: with open(path, "r") as f: self.skin = f.read() f.close() except Exception: printExc("Skin read error: " + path) Screen.__init__(self, session) self["key_red"] = StaticText(_("Cancel")) self["list"] = IPTVMainNavigatorList() self["list"].connectSelChanged(self.onSelectionChanged) self["statustext"] = Label("Loading...") self["actions"] = ActionMap(["IPTVPlayerListActions", "WizardActions", "DirectionActions", "ColorActions", "NumberActions"], { "red": self.red_pressed, "green": self.green_pressed, "yellow": self.yellow_pressed, "blue": self.blue_pressed, "ok": self.ok_pressed, "back": self.back_pressed, }, -1) self["headertext"] = Label() self["console"] = Label() self["sequencer"] = Label() try: for idx in range(5): spinnerName = "spinner" if idx: spinnerName += '_%d' % idx self[spinnerName] = Cover3() except Exception: printExc() self.spinnerPixmap = [LoadPixmap(GetIconDir('radio_button_on.png')), LoadPixmap(GetIconDir('radio_button_off.png'))] self.showHostsErrorMessage = True self.onClose.append(self.__onClose) #self.onLayoutFinish.append(self.onStart) self.onShow.append(self.onStart) #Defs self.params = dict(params) self.params['discover_info'] = self.discoverInfoFromTitle() self.params['movie_url'] = strwithmeta(self.params.get('movie_url', '')) self.params['url_params'] = self.params['movie_url'].meta self.movieTitle = self.params['discover_info']['movie_title'] self.workThread = None self.host = None self.hostName = '' self.nextSelIndex = 0 self.currSelIndex = 0 self.prevSelList = [] self.categoryList = [] self.currList = [] self.currItem = CDisplayListItem() self.visible = True ################################################################# # Inits for Proxy Queue ################################################################# # register function in main Queue if None == asynccall.gMainFunctionsQueueTab[1]: asynccall.gMainFunctionsQueueTab[1] = asynccall.CFunctionProxyQueue(self.session) asynccall.gMainFunctionsQueueTab[1].clearQueue() asynccall.gMainFunctionsQueueTab[1].setProcFun(self.doProcessProxyQueueItem) #main Queue self.mainTimer = eTimer() self.mainTimer_conn = eConnectCallback(self.mainTimer.timeout, self.processProxyQueue) # every 100ms Proxy Queue will be checked self.mainTimer_interval = 100 self.mainTimer.start(self.mainTimer_interval, True) # spinner timer self.spinnerTimer = eTimer() self.spinnerTimer_conn = eConnectCallback(self.spinnerTimer.timeout, self.updateSpinner) self.spinnerTimer_interval = 200 self.spinnerEnabled = False ################################################################# self.downloadedSubItems = []
def __init__(self, session, artItem, addParams): self.session = session self.artItem = artItem ############################################# # calculate num of rich desc items and pages ############################################# self.richDesc = { 'items_count': 0, 'pages_count': 0, 'page': 0, 'avalable_params': [] } try: if 'custom_items_list' in artItem.richDescParams: self.richDesc['custom_items_list'] = artItem.richDescParams[ 'custom_items_list'] self.richDesc['items_count'] = len( self.richDesc['custom_items_list']) else: for item in ArticleContent.RICH_DESC_PARAMS: if item in artItem.richDescParams: self.richDesc['items_count'] += 1 self.richDesc['avalable_params'].append(item) # yes I know, len(self.richDesc['avalable_params']) == self.richDesc['items_count'] except Exception: printExc() self.richDesc['pages_count'] = self.richDesc[ 'items_count'] / self.MAX_RICH_DESC_ROW_NUM if self.richDesc['items_count'] % self.MAX_RICH_DESC_ROW_NUM > 0: self.richDesc['pages_count'] += 1 if self.richDesc['items_count'] < self.MAX_RICH_DESC_ROW_NUM: self.richDesc['rows_count'] = self.richDesc['items_count'] else: self.richDesc['rows_count'] = self.MAX_RICH_DESC_ROW_NUM ############################################# self.__prepareSkin() Screen.__init__(self, session) for idx in range(self.richDesc['rows_count']): self["dsc_label_{0}".format(idx + 1)] = Label("") self["dsc_text_{0}".format(idx + 1)] = Label("") self["title"] = Label("") self["text"] = ScrollLabel(" ") self["page_marker"] = Cover3() ############################################# # COVER ############################################# self["cover"] = Cover() self.cover = { 'src': '', 'downloader': None, 'files_to_remove': [], 'image_path': '' } try: self.cover['image_path'] = os.path.join( addParams['buffering_path'], '.iptv_buffering.jpg') except Exception: printExc() ############################################# ############################################# # SPINER ############################################# try: for idx in range(5): spinnerName = "spinner" if idx: spinnerName += '_%d' % idx self[spinnerName] = Cover3() except Exception: printExc() self.spinner = {} self.spinner["pixmap"] = [ LoadPixmap(GetIconDir('radio_button_on.png')), LoadPixmap(GetIconDir('radio_button_off.png')) ] # spinner timer self.spinner["timer"] = eTimer() self.spinner["timer_conn"] = eConnectCallback( self.spinner["timer"].timeout, self.updateSpinner) self.spinner["timer_interval"] = 200 self.spinner["enabled"] = False ############################################# self["actions"] = ActionMap( [ 'IPTVAlternateVideoPlayer', 'MoviePlayerActions', 'MediaPlayerActions', 'WizardActions', 'DirectionActions' ], { "ok": self.key_ok, "back": self.key_back, "left": self.key_left, "right": self.key_right, "up": self.key_up, "down": self.key_down, }, -1) self.onClose.append(self.__onClose) #self.onShow.append(self.onStart) self.onLayoutFinish.append(self.onStart)
def __init__(self, session, filesrcLocation, FileName, lastPosition=None, player='eplayer', additionalParams={}): # 'gstplayer' Screen.__init__(self, session) self.skinName = "IPTVExtMoviePlayer" self.player = player if 'gstplayer' == self.player: self.playerName = _("external gstplayer") self.gstAdditionalParams = {} self.gstAdditionalParams[ 'download-buffer-path'] = additionalParams.get( 'download-buffer-path', '' ) # File template to store temporary files in, should contain directory and XXXXXX self.gstAdditionalParams[ 'ring-buffer-max-size'] = additionalParams.get( 'ring-buffer-max-size', 0) # in MB self.gstAdditionalParams['buffer-duration'] = additionalParams.get( 'buffer-duration', -1) # in s self.gstAdditionalParams['buffer-size'] = additionalParams.get( 'buffer-size', 0) # in KB else: self.playerName = _("external eplayer3") self.session.nav.playService( None ) # current service must be None to give free access to DVB Audio and Video Sinks self.fileSRC = filesrcLocation self.title = FileName if lastPosition: self.lastPosition = lastPosition else: self.lastPosition = 0 self.downloader = additionalParams.get('downloader', None) printDBG('IPTVExtMoviePlayer.__init__ lastPosition[%r]' % self.lastPosition) self.extPlayerCmddDispatcher = ExtPlayerCommandsDispatcher(self) self["actions"] = ActionMap( [ 'IPTVAlternateVideoPlayer', 'MoviePlayerActions', 'MediaPlayerActions', 'MediaPlayerSeekActions', 'WizardActions' ], { "leavePlayer": self.key_stop, 'play': self.key_play, 'pause': self.key_pause, 'exit': self.key_exit, 'back': self.key_exit, 'info': self.key_info, 'seekdef:1': self.key_seek1, 'seekdef:3': self.key_seek3, 'seekdef:4': self.key_seek4, 'seekdef:6': self.key_seek6, 'seekdef:7': self.key_seek7, 'seekdef:9': self.key_seek9, 'seekFwd': self.key_seekFwd, 'seekBack': self.key_seekBack, 'left_press': self.key_left_press, 'left_repeat': self.key_left_repeat, 'rigth_press': self.key_rigth_press, 'rigth_repeat': self.key_rigth_repeat, 'ok': self.key_ok, }, -1) self.onClose.append(self.__onClose) #self.onShow.append(self.__onShow) self.onLayoutFinish.append(self.onStart) self.console = None self.isClosing = False self.responseData = "" # playback info # GUI self.updateInfoTimer = eTimer() self.updateInfoTimer_conn = eConnectCallback( self.updateInfoTimer.timeout, self.updateInfo) # playback info bar gui elements self['playbackInfoBaner'] = Cover3() self['statusIcon'] = Cover3() self['progressBar'] = ProgressBar() self['bufferingBar'] = ProgressBar() self['goToSeekPointer'] = Cover3() self['infoBarTitle'] = Label(self.title) self['goToSeekLabel'] = Label("0:00:00") self['currTimeLabel'] = Label("0:00:00") self['remainedLabel'] = Label("-0:00:00") self['lengthTimeLabel'] = Label("0:00:00") # goto seek timer self.playback = {} self.playback['GoToSeekTimer'] = eTimer() self.playback['GoToSeekTimer_conn'] = eConnectCallback( self.playback['GoToSeekTimer'].timeout, self.doGoToSeek) self.playback.update({ 'CurrentTime': 0, 'Length': 0, 'LengthFromPlayerReceived': False, 'GoToSeekTime': 0, 'StartGoToSeekTime': 0, 'GoToSeeking': False, 'IsLive': False, 'Status': None }) # load pixmaps for statusIcon self.playback['statusIcons'] = { 'Play': None, 'Pause': None, 'FastForward': None, 'SlowMotion': None } try: self.playback['statusIcons']['Play'] = LoadPixmap( GetIPTVDMImgDir("playback_a_play.png")) self.playback['statusIcons']['Pause'] = LoadPixmap( GetIPTVDMImgDir("playback_a_pause.png")) self.playback['statusIcons']['FastForward'] = LoadPixmap( GetIPTVDMImgDir("playback_a_ff.png")) self.playback['statusIcons']['SlowMotion'] = self.playback[ 'statusIcons']['FastForward'] except: printExc() # show hide info bar functionality self.goToSeekRepeatCount = 0 self.goToSeekStep = 0 self.playbackInfoBar = { 'visible': False, 'blocked': False, 'guiElemNames': [ 'playbackInfoBaner', 'progressBar', 'bufferingBar', 'goToSeekPointer', 'goToSeekLabel', 'infoBarTitle', 'currTimeLabel', 'remainedLabel', 'lengthTimeLabel', 'statusIcon' ] } self.playbackInfoBar['timer'] = eTimer() self.playbackInfoBar['timer_conn'] = eConnectCallback( self.playbackInfoBar['timer'].timeout, self.hidePlaybackInfoBar) self.isStarted = False self.hidePlaybackInfoBar() self.waitEOSAbortedFix = { 'EOSaborted_received': False, 'poll_received': False, 'timer': None } self.waitEOSAbortedFix['timer'] = eTimer() self.waitEOSAbortedFix['timer_conn'] = eConnectCallback( self.waitEOSAbortedFix['timer'].timeout, self.waitEOSAbortedFixTimeoutCallback) self.waitCloseFix = {'waiting': False} self.waitCloseFix['timer'] = eTimer() self.waitCloseFix['timer_conn'] = eConnectCallback( self.waitCloseFix['timer'].timeout, self.waitCloseTimeoutCallback) self.isCloseRequestedByUser = False self.playerBinaryInfo = {'version': None, 'data': ''} self.messageQueue = [] self.underMessage = False try: self.autoHideTime = 1000 * int( config.plugins.iptvplayer.extplayer_infobar_timeout.value) except: self.autoHideTime = 1000
def __init__(self, session, hCaptcha, additionalParams={}): printDBG("UnCaptchahCaptchaWidget.__init__ --------------------------") self.params = additionalParams self.imgFilePath = GetTmpDir('.iptvplayer_hcaptcha_0.jpg') self.numOfImg = hCaptcha['imgNumber'] self.numOfCol = self.numOfImg / 3 self.numOfRow = 3 self.markerWidth = self.params.get('marker_width', 100) self.markerHeight = self.params.get('marker_height', 100) self.offsetCoverX = 100 self.offsetCoverY = 100 windowWidth = self.markerWidth * self.numOfCol + self.offsetCoverX * 2 windowHeight = self.markerWidth * self.numOfRow + self.offsetCoverY + 70 coversSkin = '' self.coversSelection = [] for x in range(self.numOfCol): self.coversSelection.append([]) for y in range(self.numOfRow): coversSkin += """<widget name="cover_%s%s" zPosition="5" position="%d,%d" size="%d,%d" transparent="1" alphatest="blend" />""" % ( x, y, (self.offsetCoverX + self.markerWidth * x), # pos X image (self.offsetCoverY + self.markerHeight * y), # pos Y image self.markerWidth, self.markerHeight) self.coversSelection[x].append( False) # at start no icon is selected skin_puzzle_part = "" for n_img in range(self.numOfImg): r = n_img / self.numOfCol c = n_img % self.numOfCol skin_puzzle_part += " <widget name=\"puzzle_image_%d\" position=\"%d,%d\" size=\"%d,%d\" zPosition=\"3\" transparent=\"1\" alphatest=\"blend\" />\n" % ( n_img, self.offsetCoverX + c * self.markerWidth, self.offsetCoverY + r * self.markerHeight, self.markerWidth, self.markerHeight) self.skin = """ <screen position="center,center" size="%d,%d" title="%s"> <widget name="statustext" position="0,10" zPosition="2" size="%d,80" valign="center" halign="center" font="Regular;22" transparent="1" /> #puzzle_part# <widget name="marker" position="%d,%d" size="%d,%d" zPosition="4" transparent="1" alphatest="blend" /> <widget name="accept" position="10,%d" zPosition="2" size="%d,50" valign="center" halign="center" font="Regular;22" foregroundColor="#00FFFFFF" backgroundColor="#FFFFFFFF" /> %s </screen> """ % (windowWidth, windowHeight, "hCaptcha", windowWidth, self.offsetCoverX, self.offsetCoverY, self.markerWidth, self.markerHeight, self.offsetCoverY + self.markerHeight * self.numOfRow + 10, windowWidth - 20, coversSkin) self.skin = self.skin.replace("#puzzle_part#", skin_puzzle_part) self.session = session Screen.__init__(self, session) self["actions"] = ActionMap( ["WizardActions", "DirectionActions", "ColorActions"], { "left": self.keyLeft, "right": self.keyRight, "up": self.keyUp, "down": self.keyDown, "ok": self.keyOK, "back": self.keyCancel, }, -1) self.markerPixmap = LoadPixmap(GetIconDir('markerCaptchaV2.png')) self.selectPixmap = LoadPixmap(GetIconDir('selectCaptchaV2.png')) self["statustext"] = Label(str(hCaptcha['question'])) self["accept"] = Label(self.params.get('accep_label', _("Verify"))) for n_img in range(self.numOfImg): self['puzzle_image_%d' % n_img] = Cover2() self["marker"] = Cover3() for x in range(self.numOfCol): for y in range(self.numOfRow): strIndex = "cover_%s%s" % (x, y) self[strIndex] = Cover3() self.currX = 0 self.currY = 0 self.focusOnAcceptButton = False self.onLayoutFinish.append(self.onStart)
def __init__(self, session, params={}): # params: vk_title, movie_title self.session = session Screen.__init__(self, session) self.params = params self.params['login'] = config.plugins.iptvplayer.opensuborg_login.value self.params[ 'password'] = config.plugins.iptvplayer.opensuborg_password.value self.searchPattern = CParsingHelper.getNormalizeStr( self.params.get('movie_title', '')) # try to guess season and episode number try: tmp = CParsingHelper.getSearchGroups(self.searchPattern + ' ', 's([0-9]+?)e([0-9]+?)[^0-9]', 2) self.episodeData = {'season': int(tmp[0]), 'episode': int(tmp[1])} except: self.episodeData = {'season': -1, 'episode': -1} self.onShown.append(self.onStart) self.onClose.append(self.__onClose) self.subProvider = OpenSubOrgProvider() self["title"] = Label(" ") self["console"] = Label(" ") self["label_red"] = Label(_("Cancel")) self["label_yellow"] = Label(_("Move group")) self["label_green"] = Label(_("Apply")) self["icon_red"] = Cover3() self["icon_yellow"] = Cover3() self["icon_green"] = Cover3() self["list"] = IPTVMainNavigatorList() self["list"].connectSelChanged(self.onSelectionChanged) self["actions"] = ActionMap( [ "ColorActions", "SetupActions", "WizardActions", "ListboxActions" ], { "cancel": self.keyExit, "ok": self.keyOK, "red": self.keyRed, "yellow": self.keyYellow, "green": self.keyGreen, }, -2) self.iconPixmap = {} for icon in ['red', 'yellow', 'green']: self.iconPixmap[icon] = LoadPixmap(GetIconDir(icon + '.png')) self.movieTitle = '' self.stackList = [] self.stackItems = [] self.defaultLanguage = GetDefaultLang() self.listMode = False self.downloadedSubFilePath = '' self.loginPassed = False self.tmpItem = None