Beispiel #1
0
 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
Beispiel #2
0
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)
Beispiel #3
0
 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
Beispiel #4
0
 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)
Beispiel #5
0
 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)