Add 'play with mplayer' to right click menu

Fixes #118
This commit is contained in:
Keith Edmunds 2022-06-10 14:57:01 +01:00
parent 3f609f6f2f
commit b05e6d156d

View File

@ -19,6 +19,8 @@ from PyQt5.QtWidgets import (
import helpers
import os
import re
import subprocess
import threading
from config import Config
from datetime import datetime, timedelta
@ -223,7 +225,12 @@ class PlaylistTab(QTableWidget):
act_info = self.menu.addAction('Info')
act_info.triggered.connect(lambda: self._info_row(row))
self.menu.addSeparator()
if row not in self._get_notes_rows():
if row not in self.get_notes_rows():
act_mplayer = self.menu.addAction(
"Play track with mplayer")
act_mplayer.triggered.connect(
lambda: self._mplayer(row))
self.menu.addSeparator()
if not current and not next_row:
act_setnext = self.menu.addAction("Set next")
with Session() as session:
@ -1420,6 +1427,21 @@ class PlaylistTab(QTableWidget):
self.item(row, self.COL_USERDATA).setData(
self.ROW_METADATA, new_metadata)
def _mplayer(self, row: int) -> None:
"""Play track with mplayer"""
DEBUG(f"_mplayer({row})")
if row in self.get_notes_rows():
return None
with Session() as session:
track: Tracks = self._get_row_track_object(row, session)
cmd_list = ['gmplayer', '-vc', 'null', '-vo', 'null', track.path]
thread = threading.Thread(
target=self._run_subprocess, args=(cmd_list,))
thread.start()
def _rescan(self, row: int) -> None:
"""
If passed row is track row, rescan it.
@ -1435,6 +1457,11 @@ class PlaylistTab(QTableWidget):
track.rescan(session)
self._update_row(session, row, track)
def _run_subprocess(self, args):
"""Run args in subprocess"""
subprocess.call(args)
def _set_current_track_row(self, row: int) -> None:
"""Mark this row as current track"""