diff options
author | jerous <jerous@gmail.com> | 2008-06-08 21:04:32 +0200 |
---|---|---|
committer | jerous <jerous@gmail.com> | 2008-06-08 21:04:32 +0200 |
commit | 3decf3e30009a70ce65ee1bcd34b4899dba0ef88 (patch) | |
tree | 355e9516eaae9e61a0d765b9598d8449ee178d2a /winMain.py | |
parent | 5f544c1b6c0c57b546a21a32623c8791c91754b8 (diff) |
showing album cover, if there is a file cover.jpg/jpeg
Diffstat (limited to 'winMain.py')
-rw-r--r-- | winMain.py | 66 |
1 files changed, 62 insertions, 4 deletions
@@ -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) |