summaryrefslogtreecommitdiff
path: root/winMain.py
diff options
context:
space:
mode:
authorjerous <jerous@gmail.com>2008-06-08 21:04:32 +0200
committerjerous <jerous@gmail.com>2008-06-08 21:04:32 +0200
commit3decf3e30009a70ce65ee1bcd34b4899dba0ef88 (patch)
tree355e9516eaae9e61a0d765b9598d8449ee178d2a /winMain.py
parent5f544c1b6c0c57b546a21a32623c8791c91754b8 (diff)
showing album cover, if there is a file cover.jpg/jpeg
Diffstat (limited to 'winMain.py')
-rw-r--r--winMain.py66
1 files changed, 62 insertions, 4 deletions
diff --git a/winMain.py b/winMain.py
index a63bed9..e9df216 100644
--- a/winMain.py
+++ b/winMain.py
@@ -5,7 +5,7 @@ import sys
import copy
from misc import *
-from clSettings import settings
+from clSettings import settings,mpdSettings
from clMonty import monty
from winConnect import winConnect
@@ -177,7 +177,6 @@ class wgPlayControl(QtGui.QWidget):
monty.resume()
def onBtnStopClick(self):
monty.stop()
- self.updatePlayingInfo()
def onBtnPreviousClick(self):
monty.previous()
def onBtnNextClick(self):
@@ -192,7 +191,61 @@ class wgPlayControl(QtGui.QWidget):
else:
mode=('0', 'min', 'med', 'max')[int(3*v/100)]
self.svgVolume.load('gfx/stock_volume-%s.svg'%(mode))
+
+class wgAlbumCover(QtGui.QWidget):
+ " container for the image"
+ img=None
+ def __init__(self,parent=None):
+ QtGui.QWidget.__init__(self,parent)
+ monty.addListener('onSongChange', self.onSongChange)
+ monty.addListener('onDisconnect', self.onDisconnect)
+
+ self.setMinimumSize(64,64)
+ self.onSongChange(None)
+
+ def mousePressEvent(self, event):
+ self.onSongChange(None)
+ def paintEvent(self, event):
+ if not self.img:
+ return
+ l=min(self.width(),self.height())
+ p=QtGui.QPainter(self)
+ rect=QtCore.QRectF((self.width()-l)/2,0,l,l)
+ if isinstance(self.img, QtSvg.QSvgRenderer):
+ self.img.render(p, rect)
+ else:
+ p.drawImage(rect,self.img)
+
+ def onSongChange(self, params):
+ song=monty.getCurrentSong()
+ try:
+ song._data['file']
+ except:
+ self.img=None
+ self.update()
+ return
+
+ self.img=QtSvg.QSvgRenderer(self)
+ self.img.load('gfx/no-cd-cover.svg')
+ coverFiles=['cover.jpg', 'cover.jpeg']
+ fInfo=QtCore.QFileInfo(song.getFilepath())
+ path=str(fInfo.absoluteDir().dirName())
+ for coverFile in coverFiles:
+ file='%s/%s/%s'%(mpdSettings.get('music_directory'), path, coverFile)
+ if QtCore.QFileInfo(file).exists():
+ try:
+ self.img=QtGui.QImage()
+ self.img.load(file)
+ break
+ except:
+ print "Failed to load %s"%(file)
+ self.update()
+
+ def onDisconnect(self, params):
+ self.img=None
+ self.update()
+
class winMain(QtGui.QMainWindow):
"""The winMain class is mpc's main window, showing the playlists and control-interface"""
"Elements"
@@ -200,11 +253,12 @@ class winMain(QtGui.QMainWindow):
songStatus=None
" control of playing"
playControl=None
+ " album cover of current album"
+ albumCover=None
" lstLibrary of songs"
lstLibrary=None
" current lstPlaylist"
lstPlaylist=None
- " control buttons"
" menus"
mConnect=None
@@ -234,6 +288,7 @@ class winMain(QtGui.QMainWindow):
, self.onLibraryDoubleClick, self.onLibraryKeyPress)
self.songStatus=wgSongStatus(parent)
self.playControl=wgPlayControl(parent)
+ self.albumCover=wgAlbumCover(parent)
self.lstLibrary.showColumn(0,False)
self.lstLibrary.setMode('library', 'artist/album')
@@ -243,20 +298,23 @@ class winMain(QtGui.QMainWindow):
dockPlaylist=QtGui.QDockWidget("Playlist", parent)
dockPlayControl=QtGui.QDockWidget("Playcontrol", parent)
dockStatus=QtGui.QDockWidget("Status", parent)
+ dockCover=QtGui.QDockWidget("Album cover", parent)
dockLibrary.setWidget(self.lstLibrary)
dockPlaylist.setWidget(self.lstPlaylist)
dockPlayControl.setWidget(self.playControl)
dockStatus.setWidget(self.songStatus)
+ dockCover.setWidget(self.albumCover)
opts=QtGui.QDockWidget.DockWidgetClosable|QtGui.QDockWidget.DockWidgetMovable
#opts=QtGui.QDockWidget.AllDockWidgetFeatures
- docks=[dockLibrary,dockPlaylist,dockPlayControl,dockStatus]
+ docks=[dockLibrary,dockPlaylist,dockPlayControl,dockStatus,dockCover]
for dock in docks:
dock.setFeatures(opts)
dock.setAllowedAreas(QtCore.Qt.AllDockWidgetAreas)
self.addDockWidget(QtCore.Qt.TopDockWidgetArea, dockStatus)
+ self.addDockWidget(QtCore.Qt.TopDockWidgetArea, dockCover)
self.addDockWidget(QtCore.Qt.TopDockWidgetArea, dockPlayControl)
self.addDockWidget(QtCore.Qt.BottomDockWidgetArea, dockLibrary)
self.addDockWidget(QtCore.Qt.BottomDockWidgetArea, dockPlaylist)