def buildList(self): printl("", self, "S") self.list=[] for entry in config.plugins.dreamplex.Entries: res = [entry] res.append((eListboxPythonMultiContent.TYPE_TEXT, 55, 0, 200, 20, 1, RT_HALIGN_LEFT|RT_VALIGN_CENTER, str(entry.name.value))) if entry.connectionType.value == "2": text1 = entry.myplexUrl.value text2 = entry.myplexUsername.value else: text1 = "%d.%d.%d.%d" % tuple(entry.ip.value) text2 = "%d"% entry.port.value res.append((eListboxPythonMultiContent.TYPE_TEXT, 260, 0, 150, 20, 1, RT_HALIGN_LEFT|RT_VALIGN_CENTER, str(text1))) res.append((eListboxPythonMultiContent.TYPE_TEXT, 450, 0, 80, 20, 1, RT_HALIGN_LEFT|RT_VALIGN_CENTER, str(text2))) self.list.append(res) self.l.setList(self.list) self.moveToIndex(0) printl("", self, "C")
def getDefaultSettingsList(): printl("", __name__, "S") settingsList = ["itemsPerPage", "apiLevel", "screen", "backdropVideos"] printl("", __name__, "C") return settingsList
def registerSkinParamsInstance(): printl("", "__init__::registerSkinParamsInstance", "S") configXml = getXmlContent("/usr/lib/enigma2/python/Plugins/Extensions/DreamPlex/skins/" + config.plugins.dreamplex.skin.value +"/params") Singleton().getSkinParamsInstance(configXml) printl("", "__init__::registerSkinParamsInstance", "C")
def seekToMinute(self, minutes): printl("", self, "S") self.resumeStamp = int(minutes)*60 self.seekToStartPos() printl("", self, "C")
def showNoDataMessage(self): printl("", self, "S") text = self.plexInstance.getLastErrorMessage() self.session.open(MessageBox,_("\n%s") % text, MessageBox.TYPE_INFO) printl("", self, "C")
def right(self): printl("", self, "S") self["filelist"].pageDown() self.updateTarget() printl("", self, "C")
def __init__(self, session, initDir, myType): printl("", self, "S") Screen.__init__(self, session) self.myType = myType inhibitDirs = ["/bin", "/boot", "/dev", "/etc", "/lib", "/proc", "/sbin", "/sys", "/usr", "/var"] inhibitMounts = [] self["filelist"] = FileList(initDir, showFiles=False, inhibitMounts=inhibitMounts, inhibitDirs=inhibitDirs) self["target"] = Label() self["target"].setText(initDir) self["actions"] = ActionMap(["WizardActions", "DirectionActions", "ColorActions", "EPGSelectActions"], { "back": self.cancel, "left": self.left, "right": self.right, "up": self.up, "down": self.down, "ok": self.ok, "green": self.green, "red": self.cancel }, -1) self["key_red"] = StaticText(_("Cancel")) self["key_green"] = StaticText(_("OK")) printl("", self, "C")
def setPlayerData(self): printl("", self, "S") self.playbackData = self.playerData[self.currentIndex] self.videoData = self.playerData[self.currentIndex]['videoData'] # not used for now #self.mediaData = self.playerData[self.currentIndex]['mediaData'] # go through the data out of the function call self.resumeStamp = int(self.playbackData['resumeStamp']) / 1000 # plex stores seconds * 1000 self.server = str(self.playbackData['server']) self.id = str(self.playbackData['id']) self.multiUserServer = self.playbackData['multiUserServer'] self.url = str(self.playbackData['playUrl']) self.transcodingSession = str(self.playbackData['transcodingSession']) self.playbackType = str(self.playbackData['playbackType']) self.connectionType = str(self.playbackData['connectionType']) self.universalTranscoder = self.playbackData['universalTranscoder'] self.localAuth = self.playbackData['localAuth'] self.title = encodeThat(self.videoData['title']) self["shortDescription"].setText(encodeThat(self.videoData['summary'])) printl("", self, "C")
def getEpisodesViewDefaults(): printl("", __name__, "S") params = {} params["settings"] = {} settingsList = getDefaultSettingsList() # mandatory items have to be defined or a assert error will come for setting in settingsList: params["settings"][setting] = "mandatory" params["elements"] = {} elementsList = getDefaultCineElementsList() # init elements for element in elementsList: params["elements"][element] = {} params["elements"][element]["visible"] = True # override default True params["elements"]["audio"]["visible"] = False params["elements"]["genre"]["visible"] = False params["elements"]["subtitles"]["visible"] = False # add addional params in elements params["elements"]["backdrop"]["height"] = "315" params["elements"]["backdrop"]["width"] = "560" params["elements"]["backdrop"]["postfix"] = "_backdrop.jpg" params["elements"]["poster"]["height"] = "268" params["elements"]["poster"]["width"] = "195" params["elements"]["poster"]["postfix"] = "_poster.jpg" printl("", __name__, "C") return params
def getPlayLength(self): printl("", self, "S") length = self.seek.getLength() printl("", self, "C") return length
def left(self): printl("", self, "S") self["filelist"].pageUp() self.updateTarget() printl("", self, "C")
def postWidgetCreate(self, instance): printl("", self, "S") MenuList.postWidgetCreate(self, instance) instance.setItemHeight(20) printl("", self, "C")
def setAudioTrack(self): printl("", self, "S") if not self.switchedLanguage: try: service = self.session.nav.getCurrentService() tracks = service and self.getServiceInterface("audioTracks") nTracks = tracks and tracks.getNumberOfTracks() or 0 if not nTracks: printl("no tracks found yet ... retrying later", self, "D") return self.nTracks = True trackList = [] for i in xrange(nTracks): audioInfo = tracks.getTrackInfo(i) lang = audioInfo.getLanguage() printl("lang: " + str(lang), self, "D") trackList += [str(lang)] systemLanguage = language.getLanguage()[:2] # getLanguage returns e.g. "fi_FI" for "language_country" printl("found systemLanguage: " + systemLanguage, self, "I") #systemLanguage = "en" self.tryAudioEnable(trackList, systemLanguage, tracks) except Exception, e: printl("audioTrack exception: " + str(e), self, "W")
def onHide(self): printl("", self , "S") # We could close the still picutre here, but keep it open for a neatless expereience pass printl("", self, "C")
def translateNames(self): printl("", self, "S") for i in self.rangeList: self.translatePositionToName(int(i), str(i)) printl("", self, "C")
def pollStart(self): printl("", self , "S") self.addEventTracker() self.poll_timer.start(500) printl("", self, "C")
def up(self): printl("", self, "S") self["filelist"].up() self.updateTarget() printl("", self, "C")
def abortUserConfiguration(self): printl("", self, "S") self.session.open(MessageBox,_("Adding new user was not completed"), MessageBox.TYPE_INFO) #self.close() printl("", self, "C")
def __init__(self, session, libraryName, loadLibrary, playEntry, viewName, select=None, sort=None, myFilter=None, cache=None): printl("", self , "S") self.session = session DP_ViewCine.__init__(self, session, libraryName, loadLibrary, playEntry, viewName, select, sort, myFilter, cache) printl("", self, "C")
def setEnigmaServiceId(self): printl("", self, "S") # check for playable services printl( "Checking for usable gstreamer service (builtin)... ",self, "I") # lets built the sref for the movieplayer out of the gathered information if self.url[:4] == "http": #this means we are in streaming mode so we will use sref 4097 self.ENIGMA_SERVICE_ID = self.ENIGMA_SERVICEGS_ID elif self.url[-3:] == ".ts" or self.url[-4:] == ".iso": # seems like we have a real ts file ot a iso file so we will use sref 1 self.ENIGMA_SERVICE_ID = self.ENIGMA_SERVICETS_ID elif self.url[-5:] == ".m2ts": self.ENIGMA_SERVICE_ID = self.ENIGMA_SERVIDEM2_ID else: # if we have a real file but no ts but for eg mkv we will use sref 4097 if self.isValidServiceId(self.ENIGMA_SERVICEGS_ID): printl("we are able to stream over 4097", self, "I") self.ENIGMA_SERVICE_ID = self.ENIGMA_SERVICEGS_ID else: raise Exception printl("self.ENIGMA_SERVICE_ID = " + str(self.ENIGMA_SERVICE_ID), self, "I") printl("", self, "C")
def event(self, myType): printl("", self , "S") if myType == iPlayableService.evEOF: self.__evEOF() printl("", self, "C")
def showStillpicture(self, pic): printl("", self , "S") if self.ctypes is not None: self.ctypes.call_function(self.showSinglePic, (pic, )) printl("", self, "C")
def finishStillPicture(self): printl("", self , "S") if self.ctypes is not None and self.finishShowSinglePic is not None: self.ctypes.call_function(self.finishShowSinglePic, ()) printl("", self, "C")
def unPauseService(self): printl("", self, "S") self.hide() self.setSeekState(self.SEEK_STATE_PLAY) printl("", self, "S")
def setXmlHeader(self, xml): printl("", self, "S") self.send_header('Content-type', 'text/xml; charset="utf-8"') self.send_header('Content-Length', str(len(xml))) printl("", self, "S")
def pollStop(self): printl("", self , "S") self.removeEventTracker() self.poll_timer.stop() printl("", self, "C")
def down(self): printl("", self, "S") self["filelist"].down() self.updateTarget() printl("", self, "C")
def refreshMenu(self): printl("", self, "S") if self.g_horizontal_menu: self.refreshOrientationHorMenu(0) printl("", self, "C")
def keyRight(self): printl("", self, "S") ConfigListScreen.keyRight(self) self.createSetup() printl("", self, "C")
def getText(self): printl("", self, "S") content = "" content += "Information\n\n" content += "DreamPlex - a plex client for Enigma2 \n" content += "Version: \t" + getVersion() + "\n\n" content += "Autor: \t DonDavici\n" content += "\n" content += "Contributors: \t wezhunter\n" content += "\t andyblac \n" content += "\n" content += "Skinner: \t IPMAN\n" content += "\n\nIf you like my work you can buy me a beer :-) \n\[email protected]" printl("", self, "C") return content
def setStillPicture(self, value, default=False, refresh=True, isLoop=False): printl("", self, "S") if default is True: self.stillpictureDefault = config.plugins.dreamplex.mediafolderpath.value + "/bootlogo.m1v" if self.stillpicture != value: self.stillpicture = value self.isLoop = isLoop if refresh is True: self.changed() printl("", self, "C")
def buildPlayerData(self, mediaFileUrl): printl("", self, "S") Singleton().getPlexInstance().setPlaybackType(str(self.playbackMode)) if self.isExtraData: Singleton().getPlexInstance().setPlaybackType(str(1)) self.playerData[self.currentIndex] = Singleton().getPlexInstance( ).playLibraryMedia(self.media_id, mediaFileUrl) # populate addional data self.setPlayerData() self.playSelectedMedia() printl("", self, "C")
def askForPin(self, enteredPin): printl("", self, "S") if enteredPin is None: pass else: if int(enteredPin) == int(self.current.settingsPin.value): #self.session.open(MessageBox,"The pin was correct!", MessageBox.TYPE_INFO) self.authenticated = True self.createSetup() else: self.session.open(MessageBox, "The pin was wrong! Returning ...", MessageBox.TYPE_INFO) self.close() printl("", self, "C")
def __init__(self, session, initDir, myType): printl("", self, "S") Screen.__init__(self, session) DPH_PlexScreen.__init__(self) self.guiElements = getGuiElements() self.myType = myType inhibitDirs = [ "/bin", "/boot", "/dev", "/etc", "/lib", "/proc", "/sbin", "/sys", "/usr", "/var" ] inhibitMounts = [] self["filelist"] = FileList(initDir, showFiles=False, inhibitMounts=inhibitMounts, inhibitDirs=inhibitDirs) self["target"] = Label() self["target"].setText(initDir) self["actions"] = ActionMap( [ "WizardActions", "DirectionActions", "ColorActions", "EPGSelectActions" ], { "back": self.cancel, "left": self.left, "right": self.right, "up": self.up, "down": self.down, "ok": self.ok, "green": self.green, "red": self.cancel }, -1) self["targetText"] = Label() self["btn_red"] = Pixmap() self["btn_redText"] = Label() self["btn_green"] = Pixmap() self["btn_greenText"] = Label() self.onLayoutFinish.append(self.finishLayout) printl("", self, "C")
def getDefault(self): printl("", self, "S") try: fd = open(self.defaultPickle, "rb") default = pickle.load(fd) fd.close() except: default = { "view": self.currentViewIndex, "selection": None, "sort": None, "filter": None, } printl("", self, "C") return default
def timelineWatcher(self, stop_event, wait_event): printl("", self, "S") while not stop_event.is_set(): while not wait_event.is_set(): ret = self.updateTimeline() if ret: wait_event.wait(3) continue else: wait_event.wait(3) break stop_event.wait(1) continue printl("", self, "C")
def __init__(self, session, libraryName, loadLibrary, playEntry, viewName, select=None, sort=None, myFilter=None, cache=None): printl("", self, "S") self.session = session DP_View.__init__(self, session, libraryName, loadLibrary, playEntry, viewName, select, sort, myFilter, cache) printl("", self, "C")
def getServerData(self, filterBy=None): printl("", self, "S") if config.plugins.dreamplex.summerizeSections.value and filterBy is None: serverData = self.plexInstance.getSectionTypes() else: serverData = self.plexInstance.getAllSections(filterBy) if not serverData: self.showNoDataMessage() else: self.g_serverDataMenu = serverData #lets save the menu to call it when cancel is pressed self["menu"].setList(serverData) self.refreshMenu() printl("", self, "C")
def finishUserEntry(self): printl("", self, "S") self.session.open(MessageBox, _("Confirmed User from Plex was configured!"), MessageBox.TYPE_INFO) if self.editMode: content = self["content"].getCurrent() currentId = content[1][7] self["content"].deleteSelectedUser(currentId) self["content"].addNewUser(self.username, self.pin, self.authenticationToken, self.myId) self.editMode = False printl("", self, "C")
def addMyPlexSettings(self): printl("", self, "S") self.cfglist.append( getConfigListEntry( _(" >> myPLEX URL"), self.current.myplexUrl, _("You need openSSL installed for this feature! Please check in System ..." ))) self.cfglist.append( getConfigListEntry( _(" >> myPLEX Username"), self.current.myplexUsername, _("You need openSSL installed for this feature! Please check in System ..." ))) self.cfglist.append( getConfigListEntry( _(" >> myPLEX Password"), self.current.myplexPassword, _("You need openSSL installed for this feature! Please check in System ..." ))) self.cfglist.append( getConfigListEntry(_(" >> myPLEX Home Users"), self.current.myplexHomeUsers, _("Use Home Users?"))) if self.current.myplexHomeUsers.value: self.cfglist.append( getConfigListEntry(_(" >> Use Settings Protection"), self.current.protectSettings, _("Ask for pin?"))) if self.current.protectSettings.value: self.cfglist.append( getConfigListEntry(_(" >> Settings Pincode"), self.current.settingsPin, _("Pincode for changing settings"))) self.cfglist.append( getConfigListEntry( _(" >> myPLEX Pin Protection"), self.current.myplexPinProtect, _("Use Pinprotection for switch back to myPlex user?"))) if self.current.myplexPinProtect.value: self.cfglist.append( getConfigListEntry( _(" >> myPLEX Pincode"), self.current.myplexPin, _("Pincode for switching back from any home user."))) printl("", self, "C")
def selectMedia(self, count, options, server): printl("", self, "S") #if we have two or more files for the same movie, then present a screen self.options = options self.server = server self.dvdplayback = False if not self.options: response = Singleton().getPlexInstance().getLastResponse() self.session.open(MessageBox, (_("Error:") + "\n%s") % response, MessageBox.TYPE_INFO) else: if count > 1: printl("we have more than one playable part ...", self, "I") indexCount = 0 functionList = [] for items in self.options: printl("item: " + str(items), self, "D") if items[1] is not None: name = items[1].split('/')[-1] else: size = convertSize(int(items[3])) duration = time.strftime('%H:%M:%S', time.gmtime(int(items[4]))) # this is the case when there is no information of the real file name name = items[0] + " (" + items[ 2] + " / " + size + " / " + duration + ")" printl("name " + str(name), self, "D") functionList.append(( name, indexCount, )) indexCount += 1 self.session.openWithCallback(self.setSelectedMedia, ChoiceBox, title=_("Select media to play"), list=functionList) else: self.setSelectedMedia() printl("", self, "C")
def getViewTypesForSettings(): printl("", "__init__::getViewTypesForSettings", "S") # view settings viewChoicesForMovies = getViewsByType("movies") config.plugins.dreamplex.defaultMovieView = ConfigSelection( default="0", choices=viewChoicesForMovies) viewChoicesForShows = getViewsByType("shows") config.plugins.dreamplex.defaultShowView = ConfigSelection( default="0", choices=viewChoicesForShows) viewChoicesForMusic = getViewsByType("music") config.plugins.dreamplex.defaultMusicView = ConfigSelection( default="0", choices=viewChoicesForMusic) printl("", "__init__::getViewTypesForSettings", "C")
def __init__(self): printl("", self, "S") assert not MediaSyncerInfo.instance, "only one MediaSyncerInfo instance is allowed!" MediaSyncerInfo.instance = self # set instance self.syncer = None self.running = False self.backgroundMediaSyncer = None self.callback_infos = None self.callback_finished = None self.callback_progress = None self.mode = None self.serverConfig = None self.plexInstance = None printl("", self, "C")
def playPreviousEntry(self): printl("", self, "S") # first we write back the state of the current file to the plex server self.handleProgress() self.currentIndex -= 1 # check if we are at the begining of the list we start at the end if self.currentIndex < 0: self.currentIndex = self.listCount # stop current playback if exists self.session.nav.stopService() # play self.playMedia() printl("", self, "C")
def finishLayout(self): printl("", self, "S") self["btn_red"].instance.setPixmapFromFile(self.guiElements["key_red"]) self["btn_redText"].setText(_("Delete Entry")) self["btn_green"].instance.setPixmapFromFile( self.guiElements["key_green"]) self["btn_greenText"].setText(_("Add Entry")) if self.error: self.session.open( MessageBox, _("Something went wrong while opening mappings xml!"), MessageBox.TYPE_INFO) self.close() printl("", self, "C")
def onLeave(self): printl("", self, "S") # first we have to turn off filtermode or the keypress that is needed to refresh function names will be interpreted as filter action self.toggleFilterMode(quit=True) # first we call the the rest of the onEnter from super super(DPS_ViewMusic,self).onLeave() # first restore Elements self.restoreElementsInViewStep() self.initFilterMode() # we do the refresh here to be able to handle directory content self.refresh() printl("", self, "C")
def filter(self): printl("", self, "S") if self.onNumberKeyLastChar == " ": self["menu"].setList(self.beforeFilterListViewList) # we also have to reset the variable because this one is passed to player self.listViewList = self.beforeFilterListViewList else: self.listViewList = [ x for x in self.beforeFilterListViewList if x[0][0] == self.onNumberKeyLastChar ] self["menu"].setList(self.listViewList) self.refreshMenu() printl("", self, "C")
def startSelection(self): printl("", self, "S") selection = self["content"].getCurrent() if selection[1] == "oe16" or selection[1] == "oe20": self.checkLib(selection[1]) if selection[1] == "check_DP": self.checkDreamPlexInstallation() if selection[1] == "check_Curl": self.checkCurlInstallation() if selection[1] == "check_Update": self.checkForUpdate() printl("", self, "C")
def getHomeUsersFromServer(self): printl("", self, "S") printl("serverID: " + str(self.serverID), self, "D") for server in self.tree.findall("server"): printl("servername: " + str(server.get('id')), self, "D") if str(server.get('id')) == str(self.serverID): printl("", self, "C") return server return None
def getMovieViewDefaults(): printl("", "DP_ViewFactory::getMovieViewDefaults", "S") params = {} params["settings"] = {} settingsList = getDefaultSettingsList() # mandatory items have to be defined or a assert error will come for setting in settingsList: params["settings"][setting] = "mandatory" params["elements"] = {} elementsList = getDefaultCineElementsList() # init elements for element in elementsList: params["elements"][element] = {} params["elements"][element]["visible"] = True # override default True params["elements"]["grandparentTitle"]["visible"] = False params["elements"]["childCount"]["visible"] = False params["elements"]["leafCount"]["visible"] = False params["elements"]["unviewedLeafCount"]["visible"] = False params["elements"]["viewedLeafCount"]["visible"] = False params["elements"]["videoCodec"]["visible"] = False params["elements"]["bitrate"]["visible"] = False params["elements"]["videoFrameRate"]["visible"] = False params["elements"]["audioChannels"]["visible"] = False params["elements"]["aspectRatio"]["visible"] = False params["elements"]["videoResolution"]["visible"] = False params["elements"]["audioCodec"]["visible"] = False params["elements"]["file"]["visible"] = False # add addional params in elements # params["elements"]["backdrop"]["height"] = "315" # params["elements"]["backdrop"]["width"] = "560" #params["elements"]["backdrop"]["postfix"] = "_backdrop_v2.jpg" # params["elements"]["poster"]["height"] = "268" # params["elements"]["poster"]["width"] = "195" #params["elements"]["poster"]["postfix"] = "_poster_v2.jpg" printl("", "DP_ViewFactory::getMovieViewDefaults", "C") return params
def finishLayout(self): printl("", self, "S") # first we set the pics for buttons self.setColorFunctionIcons() self["header"].setText(_("Server List:")) if self.skinResolution == "FHD": # FHD is used for FULL HD Boxes with new framebuffer self["columnHeader"].setText(_("Name IP/myPlex Port/Email Active")) else: self["columnHeader"].setText(_("Name IP/myPlex Port/Email Active")) self["btn_redText"].setText(_("Delete")) self["btn_greenText"].setText(_("Add")) self["btn_yellowText"].setText(_("Sync Media")) self["btn_blueText"].setText(_("Discover")) printl("", self, "C")
def __init__(self, session, serverID, plexInstance): printl("", self, "S") Screen.__init__(self, session) self["actions"] = ActionMap( ["ColorActions", "SetupActions"], { #"ok": self.startSelection, "cancel": self.cancel, "red": self.redKey, "green": self.greenKey, "yellow": self.yellowKey, }, -1) self.guiElements = getGuiElements() self.plexInstance = plexInstance self.location = config.plugins.dreamplex.configfolderpath.value + "homeUsers" checkXmlFile(self.location) tree = getXmlContent(self.location) if tree is not None: self["content"] = DPS_UsersEntryList([], serverID, tree) self.updateList() self.error = False else: self.error = True self["btn_red"] = Pixmap() self["btn_redText"] = Label() self["btn_green"] = Pixmap() self["btn_greenText"] = Label() self["btn_yellow"] = Pixmap() self["btn_yellowText"] = Label() self.onShown.append(self.finishLayout) printl("", self, "C")
def checkForPinUsage(self): printl("", self, "S") self.onShown = [] if not self.authenticated: if self.current.protectSettings.value: self.session.openWithCallback( self.askForPin, InputBox, title=_("Please enter the pincode!"), type=Input.PIN) else: self.authenticated = True self.createSetup() else: self.createSetup() printl("", self, "C")
def __init__(self, session): printl("", self, "S") Screen.__init__(self, session) self._session = session self["about"] = Label() self["key_red"] = StaticText(_("Close")) self["setupActions"] = ActionMap(["SetupActions", "ColorActions"], { "red": self.keyCancel, "cancel": self.keyCancel, }, -2) self.onLayoutFinish.append(self.setContent) printl("", self, "C")
def stop_discovery(self): printl("", self, "S") if self._discovery_is_running: printl("Discovery shutting down", self, "D") self._discovery_is_running = False self.discover_t.join() del self.discover_t else: printl("Discovery not running", self, "D") printl("", self, "C")
def stop_registration(self): printl("", self, "S") if self._registration_is_running: printl("Registration shutting down", self, "D") self._registration_is_running = False self.register_t.join() del self.register_t else: printl("Registration not running", self, "D") printl("", self, "C")
def setClientDetails(self): printl("", self, "S") gBoxType = getBoxInformation() self.client_id = str(getUUID()) self.client_data = "Content-Type: plex/media-player\n" self.client_data += "Resource-Identifier: %s\n" % self.client_id self.client_data += "Name: %s\n" % config.plugins.dreamplex.boxName.value self.client_data += "Port: %s\n" % config.plugins.dreamplex.remotePort.value self.client_data += "Product: %s\n" % gBoxType[1] + " (" + str( getMyIp()) + ")" self.client_data += "Version: %s\n" % str(getVersion()) self.client_data += "Protocol: plex\n" self.client_data += "Protocol-Version: 1\n" self.client_data += "Protocol-Capabilities: playback, navigation\n" self.client_data += "Device-Class: stb\n" printl("", self, "C")
def gotThreadMsg(self, msg): printl("", self, "S") msg = self.backgroundMediaSyncer.Message.pop() self.infoCallBack(msg[1]) if msg[0] == THREAD_FINISHED: # clean up if getOeVersion() != "oe22": self.backgroundMediaSyncer.MessagePump.recv_msg.get().remove(self.gotThreadMsg) else: self.backgroundMediaSyncerConn = None self.callback = None #self.backgroundMediaSyncer = None # this throws a green screen. dont know why self.running = False self.done() printl("", self, "C")
def getPlugin(pid, where): printl("", "__plugin__::getPlugin", "S") for plugin in gPlugins: if plugin.pid == pid and plugin.where == where: printl("plugin found ... " + str(plugin), "__plugin__::getPlugin", "D") printl("", "__plugin__::getPlugin", "C") return plugin printl("", "__plugin__::getPlugin", "C") return None
def __init__(self, parent): printl("", self , "S") eWidget.__init__(self, parent) self.setTransparent(True) printl("", self, "C")