diff --git a/coverimagewidget.py b/coverimagewidget.py
index 4f705a9..0109a3f 100644
--- a/coverimagewidget.py
+++ b/coverimagewidget.py
@@ -41,72 +41,127 @@ class CoverImageWidget(QWidget):
uic.loadUi(os.path.join(ComicTaggerSettings.baseDir(), 'coverimagewidget.ui' ), self )
+ f = self.label.font()
+ if f.pointSize() > 10:
+ f.setPointSize( f.pointSize() - 2 )
+ self.label.setFont( f )
+
self.mode = mode
- self.comic_archive = None
- self.issue_id = None
- self.url_list = []
self.comicVine = ComicVineTalker()
self.page_loader = None
- self.imageIndex = 0
- self.imageCount = 1
self.btnLeft.clicked.connect( self.decrementImage )
self.btnRight.clicked.connect( self.incrementImage )
-
- self.resetImage()
+ self.resetWidget()
+ self.updateContent()
+
+ def resetWidget(self):
+ self.comic_archive = None
+ self.issue_id = None
+ self.comicVine = None
+ self.cover_fetcher = None
+ self.url_list = []
+ if self.page_loader is not None:
+ self.page_loader.abandoned = True
+ self.page_loader = None
+ self.imageIndex = -1
+ self.imageCount = 1
+
def incrementImage( self ):
self.imageIndex += 1
if self.imageIndex == self.imageCount:
self.imageIndex = 0
- self.updateImage()
+ self.updateContent()
def decrementImage( self ):
self.imageIndex -= 1
if self.imageIndex == -1:
self.imageIndex = self.imageCount -1
- self.updateImage()
+ self.updateContent()
def setArchive( self, ca ):
if self.mode == CoverImageWidget.ArchiveMode:
+ self.resetWidget()
self.comic_archive = ca
self.imageIndex = 0
self.imageCount = ca.getNumberOfPages()
- self.updateImage()
+ self.updateContent()
def setIssueID( self, issue_id ):
if self.mode == CoverImageWidget.AltCoverMode:
+ self.resetWidget()
+ self.updateContent()
+
self.issue_id = issue_id
- self.url_list = []
- self.imageIndex = 0
- self.imageCount = 1
-
- # get the URL list
- try:
- alt_img_url_list = self.comicVine.fetchAlternateCoverURLs( issue_id )
- primary_url, thumb_url = self.comicVine.fetchIssueCoverURLs( issue_id )
- except:
- return
- self.url_list.append(primary_url)
- self.url_list.extend(alt_img_url_list)
- self.imageIndex = 0
- self.imageCount = len(self.url_list)
- self.updateImage()
+ self.comicVine = ComicVineTalker()
+ self.comicVine.urlFetchComplete.connect( self.primaryUrlFetchComplete )
+ self.comicVine.asyncFetchIssueCoverURLs( int(self.issue_id) )
+ def primaryUrlFetchComplete( self, primary_url, thumb_url, issue_id ):
+ self.url_list.append(str(primary_url))
+ self.imageIndex = 0
+ self.imageCount = len(self.url_list)
+ self.updateContent()
+
+ #defer the alt cover search
+ QTimer.singleShot(1, self.startAltCoverSearch)
+
+ def startAltCoverSearch( self ):
+
+ # now we need to get the list of alt cover URLs
+ self.label.setText("Searching for alt. covers...")
+
+ # page URL should already be cached, so no need to defer
+ self.comicVine = ComicVineTalker()
+ issue_page_url = self.comicVine.fetchIssuePageURL( self.issue_id )
+ self.comicVine.altUrlListFetchComplete.connect( self.altCoverUrlListFetchComplete )
+ self.comicVine.asyncFetchAlternateCoverURLs( int(self.issue_id), issue_page_url)
+
+ def altCoverUrlListFetchComplete( self, url_list, issue_id ):
+ if len(url_list) > 0:
+ self.url_list.extend(url_list)
+ self.imageCount = len(self.url_list)
+ self.updateButtons()
+
+
+ def updateContent( self ):
+ self.updateImage()
+ self.updateButtons()
+
def updateImage( self ):
- if self.mode == CoverImageWidget.AltCoverMode:
+ if self.imageIndex == -1:
+ self.loadDefault()
+ elif self.mode == CoverImageWidget.AltCoverMode:
+ self.loadURL()
+ else:
+ self.loadPage()
+
+ def updateButtons( self ):
+ if self.imageIndex == -1 or self.imageCount == 1:
+ self.btnLeft.setEnabled(False)
+ self.btnRight.setEnabled(False)
+ self.btnLeft.hide()
+ self.btnRight.hide()
+ else:
+ self.btnLeft.setEnabled(True)
+ self.btnRight.setEnabled(True)
+ self.btnLeft.show()
+ self.btnRight.show()
+
+ if self.imageIndex == -1 or self.imageCount == 1:
+ self.label.setText("")
+ elif self.mode == CoverImageWidget.AltCoverMode:
if self.imageIndex == 0:
self.label.setText("Primary Cover")
else:
self.label.setText("Alt. Cover {0}".format(self.imageIndex))
- self.loadURL()
else:
self.label.setText("Page {0}".format(self.imageIndex+1))
- self.loadPage()
- pass
def loadURL( self ):
+ self.loadDefault()
self.cover_fetcher = ImageFetcher( )
self.cover_fetcher.fetchComplete.connect(self.coverRemoteFetchComplete)
self.cover_fetcher.fetch( self.url_list[self.imageIndex] )
@@ -117,7 +172,6 @@ class CoverImageWidget(QWidget):
img.loadFromData( image_data )
self.current_pixmap = QPixmap(img)
self.setDisplayPixmap( 0, 0)
- QCoreApplication.processEvents()
def loadPage( self ):
if self.comic_archive is not None:
@@ -132,7 +186,7 @@ class CoverImageWidget(QWidget):
self.current_pixmap = QPixmap(img)
self.setDisplayPixmap( 0, 0)
- def resetImage( self ):
+ def loadDefault( self ):
self.current_pixmap = QPixmap(os.path.join(ComicTaggerSettings.baseDir(), 'graphics/nocover.png' ))
self.setDisplayPixmap( 0, 0)
diff --git a/coverimagewidget.ui b/coverimagewidget.ui
index 2eabe3f..0dd8e6a 100644
--- a/coverimagewidget.ui
+++ b/coverimagewidget.ui
@@ -81,7 +81,7 @@
- QFrame::StyledPanel
+ QFrame::NoFrame
QFrame::Raised