fixed animations. also added caching to animations, this might help with the slowdown?
This commit is contained in:
parent
3570a32912
commit
ca6190ea00
1 changed files with 32 additions and 20 deletions
52
convo.py
52
convo.py
|
@ -211,6 +211,29 @@ class PesterTabWindow(QtGui.QFrame):
|
||||||
|
|
||||||
windowClosed = QtCore.pyqtSignal()
|
windowClosed = QtCore.pyqtSignal()
|
||||||
|
|
||||||
|
class PesterMovie(QtGui.QMovie):
|
||||||
|
def __init__(self, parent):
|
||||||
|
QtGui.QMovie.__init__(self, parent)
|
||||||
|
self.textwindow = parent
|
||||||
|
@QtCore.pyqtSlot(int)
|
||||||
|
def animate(self, frame):
|
||||||
|
text = self.textwindow
|
||||||
|
if text.mainwindow.config.animations():
|
||||||
|
movie = self
|
||||||
|
url = text.urls[movie].toString()
|
||||||
|
html = unicode(text.toHtml())
|
||||||
|
if html.find(url) != -1:
|
||||||
|
if text.hasTabs:
|
||||||
|
i = text.tabobject.tabIndices[text.parent().title()]
|
||||||
|
if text.tabobject.tabs.currentIndex() == i:
|
||||||
|
text.document().addResource(QtGui.QTextDocument.ImageResource,
|
||||||
|
text.urls[movie], movie.currentPixmap())
|
||||||
|
text.setLineWrapColumnOrWidth(text.lineWrapColumnOrWidth())
|
||||||
|
else:
|
||||||
|
text.document().addResource(QtGui.QTextDocument.ImageResource,
|
||||||
|
text.urls[movie], movie.currentPixmap())
|
||||||
|
text.setLineWrapColumnOrWidth(text.lineWrapColumnOrWidth())
|
||||||
|
|
||||||
class PesterText(QtGui.QTextEdit):
|
class PesterText(QtGui.QTextEdit):
|
||||||
def __init__(self, theme, parent=None):
|
def __init__(self, theme, parent=None):
|
||||||
QtGui.QTextEdit.__init__(self, parent)
|
QtGui.QTextEdit.__init__(self, parent)
|
||||||
|
@ -218,6 +241,11 @@ class PesterText(QtGui.QTextEdit):
|
||||||
self.mainwindow = self.parent().mainwindow
|
self.mainwindow = self.parent().mainwindow
|
||||||
else:
|
else:
|
||||||
self.mainwindow = self.parent()
|
self.mainwindow = self.parent()
|
||||||
|
if type(parent.parent()) is PesterTabWindow:
|
||||||
|
self.tabobject = parent.parent()
|
||||||
|
self.hasTabs = True
|
||||||
|
else:
|
||||||
|
self.hasTabs = False
|
||||||
self.initTheme(theme)
|
self.initTheme(theme)
|
||||||
self.setReadOnly(True)
|
self.setReadOnly(True)
|
||||||
self.setMouseTracking(True)
|
self.setMouseTracking(True)
|
||||||
|
@ -230,30 +258,14 @@ class PesterText(QtGui.QTextEdit):
|
||||||
self.connect(self.mainwindow, QtCore.SIGNAL('animationSetting(bool)'),
|
self.connect(self.mainwindow, QtCore.SIGNAL('animationSetting(bool)'),
|
||||||
self, QtCore.SLOT('animateChanged(bool)'))
|
self, QtCore.SLOT('animateChanged(bool)'))
|
||||||
def addAnimation(self, url, fileName):
|
def addAnimation(self, url, fileName):
|
||||||
movie = QtGui.QMovie(self)
|
movie = PesterMovie(self)
|
||||||
movie.setFileName(fileName)
|
movie.setFileName(fileName)
|
||||||
|
movie.setCacheMode(QtGui.QMovie.CacheAll)
|
||||||
if movie.frameCount() > 1:
|
if movie.frameCount() > 1:
|
||||||
self.urls[movie] = url
|
self.urls[movie] = url
|
||||||
self.connect(movie, QtCore.SIGNAL('frameChanged(int)'),
|
movie.connect(movie, QtCore.SIGNAL('frameChanged(int)'),
|
||||||
self, QtCore.SLOT('animate(int)'))
|
movie, QtCore.SLOT('animate(int)'))
|
||||||
#movie.start()
|
#movie.start()
|
||||||
@QtCore.pyqtSlot(int)
|
|
||||||
def animate(self, frame):
|
|
||||||
if self.mainwindow.config.animations():
|
|
||||||
movie = self.sender()
|
|
||||||
url = self.urls[movie].toString()
|
|
||||||
html = unicode(self.toHtml())
|
|
||||||
if html.find(url) != -1:
|
|
||||||
if self.parent().parent():
|
|
||||||
i = self.parent().parent().tabIndices[self.parent().title()]
|
|
||||||
if self.parent().parent().tabs.currentIndex() == i:
|
|
||||||
self.document().addResource(QtGui.QTextDocument.ImageResource,
|
|
||||||
self.urls[movie], movie.currentPixmap())
|
|
||||||
self.setLineWrapColumnOrWidth(self.lineWrapColumnOrWidth())
|
|
||||||
else:
|
|
||||||
self.document().addResource(QtGui.QTextDocument.ImageResource,
|
|
||||||
self.urls[movie], movie.currentPixmap())
|
|
||||||
self.setLineWrapColumnOrWidth(self.lineWrapColumnOrWidth())
|
|
||||||
@QtCore.pyqtSlot(bool)
|
@QtCore.pyqtSlot(bool)
|
||||||
def animateChanged(self, animate):
|
def animateChanged(self, animate):
|
||||||
if animate:
|
if animate:
|
||||||
|
|
Loading…
Reference in a new issue