Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python
- # -*- coding: utf-8 -*-
- from urlparse import urlparse
- from PyQt4 import QtCore, QtGui, QtWebKit
- UA_STRING = """Yaris (AppleWebKit (KHTML, like Gecko, Safari/419.3)"""
- class YWebPage(QtWebKit.QWebPage):
- def __init__(self):
- super(QtWebKit.QWebPage, self).__init__()
- def userAgentForUrl(self, url):
- return UA_STRING
- class Yaris(QtGui.QMainWindow):
- def __init__(self):
- super(Yaris, self).__init__()
- widget = QtGui.QWidget()
- self.setCentralWidget(widget)
- self.buffers = []
- self.codecs = [QtCore.QLatin1String(QtCore.QTextCodec.codecForMib(mib).name())
- for mib in QtCore.QTextCodec.availableMibs()]
- self.codecs.sort()
- topFiller = QtGui.QWidget()
- topFiller.setSizePolicy(QtGui.QSizePolicy.Expanding,
- QtGui.QSizePolicy.Expanding)
- self.yPage = YWebPage()
- self.webview = QtWebKit.QWebView(self)
- self.webview.urlChanged.connect(self.updStatusUrl)
- self.webview.loadProgress.connect(self.updProgress)
- self.webview.setPage(self.yPage)
- self.minibuffer = QtGui.QLineEdit()
- self.minibuffer.hide()
- self.minibuffer.returnPressed.connect(self.mbExec)
- bottomFiller = QtGui.QWidget()
- bottomFiller.setSizePolicy(QtGui.QSizePolicy.Expanding,
- QtGui.QSizePolicy.Expanding)
- vbox = QtGui.QVBoxLayout()
- vbox.setMargin(5)
- vbox.addWidget(topFiller)
- vbox.addWidget(self.webview)
- vbox.addWidget(bottomFiller)
- vbox.addWidget(self.minibuffer)
- widget.setLayout(vbox)
- self.setWindowTitle(self.tr("Yaris"))
- self.setMinimumSize(160,160)
- self.resize(1024,600)
- def loadUrl(self, url):
- self.webview.load(QtCore.QUrl(url))
- self.webview.show()
- self.updStatusUrl()
- def miniBuffer(self, prompt):
- pass
- def mbExec(self):
- text = str(self.minibuffer.text())
- if urlparse(text).scheme == '':
- text = 'http://' + text
- self.loadUrl(text)
- self.minibuffer.hide()
- self.minibuffer.clear()
- def updStatusUrl(self, url=None):
- url = self.webview.url()
- message = url.toString()
- self.statusBar().showMessage(message)
- self.updTitle()
- def updTitle(self):
- self.setWindowTitle(self.webview.title())
- def updProgress(self, p):
- pass
- def keyPressEvent(self, event):
- key = event.key()
- if event.modifiers() == QtCore.Qt.ControlModifier:
- if key == QtCore.Qt.Key_G:
- self.webview.stop()
- self.minibuffer.hide()
- else:
- if key == QtCore.Qt.Key_G:
- self.minibuffer.show()
- self.minibuffer.setFocus()
- elif key == QtCore.Qt.Key_B:
- self.webview.back()
- elif key == QtCore.Qt.Key_F:
- self.webview.forward()
- elif key == QtCore.Qt.Key_R:
- self.webview.reload()
- elif key == QtCore.Qt.Key_N:
- print "N pressed"
- else:
- super(Yaris, self).keyPressEvent(event)
- if __name__ == "__main__":
- import sys
- app = QtGui.QApplication(sys.argv)
- #QtCore.QTextCodec.setCodecForTr(QtCore.QTextCodec.codecForName("UTF-8"))
- yaris = Yaris()
- yaris.show()
- yaris.loadUrl("file:///usr/doc/qt-4.5.1/html/index.html")
- #yaris.loadUrl("file:///home/zert/Work/Prog/Python/yaris/test.html")
- sys.exit(app.exec_())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement