def forcePlay(self, source): if not globalVars.play.isDeviceOk(): return False #デバイス異常時は処理を中止 sc = None if re.search("https?://.+\..+", source) != None: #URLの場合は中にURLがないか確認 sc = self.inUrlCheck(source) if sc == None: sc = source if globalVars.play.setSource(sc): if globalVars.play.play(): ret = True self.playingList = constants.NOLIST # リストではない globalVars.listInfo.playingTmp = (source, os.path.basename(source), 0) listManager.setTag(constants.NOLIST) globalVars.app.hMainView.menu.hFunctionMenu.Enable( menuItemsStore.getRef("ABOUT_PLAYING"), True) else: ret = False else: ret = False if ret: self.errorSkipCount = 0 #エラースキップのカウンタをリセット view_manager.buttonSetPause() globalVars.app.hMainView.menu.hFunctionMenu.Enable( menuItemsStore.getRef("ABOUT_PLAYING"), True) self.refreshTagInfo() globalVars.app.hMainView.tagInfoTimer.Start(10000) view_manager.setFileStaticInfoView() #スクリーンリーダ用リストとウィンドウ情報更新 else: view_manager.buttonSetPlay() globalVars.app.hMainView.menu.hFunctionMenu.Enable( menuItemsStore.getRef("ABOUT_PLAYING"), False) view_manager.clearStaticInfoView() #スクリーンリーダ用リストとウィンドウ情報更新 view_manager.changeListLabel(globalVars.app.hMainView.playlistView) view_manager.changeListLabel(globalVars.app.hMainView.queueView) return ret
def addItemsThread(progress, flst, lcObj, id=-1): with lock: # 作業するファイルのリスト(ファイルパス) pathList = [] errorList = [] notFoundList = [] # リストで受け取ってフォルダとファイルに分ける for s in flst: if progress.status == wx.CANCEL: break if (os.path.isfile(s) and os.path.splitext(s)[1].lower() in globalVars.fileExpansions) or re.search("^https?://.+\..+/.*$", s)!=None: pathList.append(s) elif os.path.isfile(s) and os.path.splitext(s)[1].lower() == ".url": try: configP = configparser.ConfigParser() configP.read(s) url = configP["InternetShortcut"]["url"] if re.search("^https?://.+\..+/.*$", url)!=None: pathList.append(url) except: pass elif os.path.isdir(s): _appendDirList(pathList, s, errorList) elif os.path.isfile(s): errorList.append(s) else: notFoundList.append(s) # 作成したファイルパスのリストから追加 if len(lcObj) == 0: _append(pathList, lcObj, progress, -1) else: _append(pathList, lcObj, progress, id) view_manager.changeListLabel(lcObj) if len(errorList) != 0 or len(notFoundList) != 0: wx.CallAfter(loadErrorDialog.run, errorList, notFoundList) fxManager.load() wx.CallAfter(progress.Destroy)
def play(self, listPorQ=constants.PLAYLIST): if not globalVars.play.isDeviceOk(): return False #デバイス異常時は処理を中止 if globalVars.play.getStatus() == PLAYER_STATUS_DEVICEERROR: return False t = listManager.getTuple(listPorQ, True) if listPorQ == constants.QUEUE: globalVars.listInfo.playingTmp = t #キュー再生の時はタプルを一時退避 sc = None if re.search("https?://.+\..+", t[constants.ITEM_PATH]) != None: #URLの場合は中にURLがないか確認 sc = self.inUrlCheck(t[constants.ITEM_PATH]) if sc == None: sc = t[constants.ITEM_PATH] if globalVars.play.setSource(sc): ret = globalVars.play.play() else: ret = False if ret: self.errorSkipCount = 0 #エラースキップのカウンタをリセット self.playingList = listPorQ if ret: view_manager.buttonSetPause() listManager.setTag(listPorQ) globalVars.app.hMainView.menu.hFunctionMenu.Enable( menuItemsStore.getRef("ABOUT_PLAYING"), True) self.refreshTagInfo() globalVars.app.hMainView.tagInfoTimer.Start(10000) view_manager.setFileStaticInfoView() #スクリーンリーダ用リストとウィンドウ情報更新 if not ret: view_manager.buttonSetPlay() globalVars.app.hMainView.menu.hFunctionMenu.Enable( menuItemsStore.getRef("ABOUT_PLAYING"), False) view_manager.clearStaticInfoView() #スクリーンリーダ用リストとウィンドウ情報更新 view_manager.changeListLabel(globalVars.app.hMainView.playlistView) view_manager.changeListLabel(globalVars.app.hMainView.queueView) return ret
def delete(self, lcObj): if lcObj.GetSelectedItemCount() == len(lcObj): # 全選択中ならクリア lcObj.clear() self.stop() else: # 選択済みアイテムリストを生成 first = lcObj.GetFirstSelected() if first < 0: return else: itm = [[first]] nextTmp = first if lcObj == listManager.getLCObject( self.playingList) and lcObj.getPointer() == first: self.stop() # 再生中の曲を削除するときは停止 while True: next = lcObj.GetNextSelected(nextTmp) if lcObj == listManager.getLCObject( self.playingList) and lcObj.getPointer() == next: self.stop() # 再生中の曲を削除するときは停止 if next < 0: if itm[-1][0] != nextTmp: itm[-1].append(nextTmp) break else: if next - nextTmp != 1: itm[-1].append(nextTmp) itm.append([next]) nextTmp = next count = 0 # カウンタをリセットして削除開始 for l in itm: if len(l) == 2: del lcObj[l[0] - count:l[1] - count + 1] count += l[1] - l[0] + 1 else: del lcObj[l[0] - count] count += 1 view_manager.changeListLabel(lcObj)
def clearAllLists(self, evt=None): globalVars.app.hMainView.playlistView.clear() globalVars.app.hMainView.queueView.clear() self.stop() view_manager.changeListLabel(globalVars.app.hMainView.playlistView) view_manager.changeListLabel(globalVars.app.hMainView.queueView)