Skip to content

Instantly share code, notes, and snippets.

@oglops
Last active June 29, 2017 06:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save oglops/d7881e5d9c3890870ff173975cde88ad to your computer and use it in GitHub Desktop.
Save oglops/d7881e5d9c3890870ff173975cde88ad to your computer and use it in GitHub Desktop.
use gifplayer jquery plugin in qwebview to control gif, user-select: none; hides blinking text cursor when used in an editable qwebview
ins.play-gif{
position: absolute;
font-family: Arial, sans serif;
width: 50px;
height: 50px;
line-height: 52px;
text-align: center;
background: #222;
font-size: 18px;
color: #fff;
border-radius: 50%;
opacity: .9;
border: 4px solid #fff;
cursor:pointer;
text-decoration: none;
/*https://developer.mozilla.org/en/docs/Web/CSS/pointer-events*/
/* This disable all user interactions, but we lose transition animation*/
/*pointer-events: none;*/
-webkit-user-select: none;
}
ins.play-gif:hover{
opacity:.5;
}
.gifplayer-wrapper{
position:relative;
display: inline-block;
}
.spinner {
height:50px;
width:50px;
margin:0px auto;
position:absolute;
top:50%;
left:50%;
margin-top:-25px;
margin-left:-25px;
-webkit-animation: rotation .6s infinite linear;
-moz-animation: rotation .6s infinite linear;
-o-animation: rotation .6s infinite linear;
animation: rotation .6s infinite linear;
border-left:6px solid rgba(256,256,256,.15);
border-right:6px solid rgba(256,256,256,.15);
border-bottom:6px solid rgba(256,256,256,.15);
border-top:6px solid rgba(256,256,256,.8);
border-radius:100%;
}
@-webkit-keyframes rotation {
from {-webkit-transform: rotate(0deg);}
to {-webkit-transform: rotate(359deg);}
}
@-moz-keyframes rotation {
from {-moz-transform: rotate(0deg);}
to {-moz-transform: rotate(359deg);}
}
@-o-keyframes rotation {
from {-o-transform: rotate(0deg);}
to {-o-transform: rotate(359deg);}
}
@keyframes rotation {
from {transform: rotate(0deg);}
to {transform: rotate(359deg);}
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>gifplayer</title>
</head>
<body>
<img class="gif" data-src="http://rubentd.com/img/banana.gif" src="http://rubentd.com/img/banana.png">
</body>
</html>
import sys
from PyQt4.QtWebKit import QWebView, QWebInspector, QWebSettings
from PyQt4.QtGui import QApplication, QDialog, QHBoxLayout
from PyQt4.QtCore import QUrl
class Dialog(QDialog):
def __init__(self, parent=None):
super(Dialog, self).__init__(parent)
layout = QHBoxLayout()
self.browser = QWebView()
self.browser.page().settings().setAttribute(
QWebSettings.DeveloperExtrasEnabled, True)
self.inspector = QWebInspector(self)
self.inspector.setPage(self.browser.page())
layout.addWidget(self.browser)
layout.addWidget(self.inspector)
self.setLayout(layout)
self.browser.load(QUrl('gifplayer.html'))
self.resize(1800, 800)
self.browser.page().setContentEditable(True)
self.browser.loadFinished.connect(self.loadScripts)
def loadScripts(self):
# global css
QWebSettings.globalSettings().setUserStyleSheetUrl(
QUrl.fromLocalFile('/home/oglop/tmp/gifplayer/dist/gifplayer.css'))
files = [
'/home/oglop/tmp/gifplayer/dist/jquery-3.2.1.min.js',
'/home/oglop/tmp/gifplayer/dist/jquery.gifplayer.js'
]
for f in files:
js = open(f).read()
self.browser.page().mainFrame().evaluateJavaScript(js)
self.browser.page().mainFrame().evaluateJavaScript(
"$('.gif').gifplayer()")
app = QApplication(sys.argv)
dialog = Dialog()
dialog.show()
app.exec_()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment