Fixed loading html and js into view
This commit is contained in:
parent
ced63f7ce9
commit
9e83bfec47
6 changed files with 90 additions and 47 deletions
38
Linux/Helper.py
Normal file
38
Linux/Helper.py
Normal file
|
@ -0,0 +1,38 @@
|
|||
from PyQt4 import QtCore, QtGui, QtWebKit
|
||||
|
||||
class WebPage(QtWebKit.QWebPage):
|
||||
def __init__(self, parent):
|
||||
super(QtWebKit.QWebPage, self).__init__(parent)
|
||||
|
||||
def javaScriptConsoleMessage(self, message, lineNumber, sourceId):
|
||||
print str(message) + " on line: " + str(lineNumber) + " Source: " + str(sourceId)
|
||||
|
||||
class WebViewCreator(QtGui.QWidget):
|
||||
def __init__(self, app, delegate):
|
||||
|
||||
QtGui.QWidget.__init__(self)
|
||||
|
||||
self.app = app
|
||||
self.delegate = delegate
|
||||
|
||||
self.view = QtWebKit.QWebView(self)
|
||||
self.view.loadFinished.connect(self.load_finished)
|
||||
|
||||
self.page = WebPage(self)
|
||||
self.view.setPage(self.page)
|
||||
self.page.settings().setAttribute(QtWebKit.QWebSettings.LocalContentCanAccessRemoteUrls, True)
|
||||
|
||||
layout = QtGui.QVBoxLayout(self)
|
||||
layout.addWidget(self.view)
|
||||
|
||||
frame = self.view.page().mainFrame()
|
||||
frame.addToJavaScriptWindowObject("controller", self.app.controller)
|
||||
frame.addToJavaScriptWindowObject("console", self.app.console)
|
||||
|
||||
url = self.app.resources_uri() + "/index.html"
|
||||
self.view.load(QtCore.QUrl(url))
|
||||
|
||||
|
||||
def load_finished(self, ok):
|
||||
self.view.page().mainFrame().evaluateJavaScript("OS_TYPE = 'linux';")
|
||||
self.delegate.load_finished(ok)
|
|
@ -1,8 +1,7 @@
|
|||
#!/usr/bin/env python
|
||||
import os
|
||||
import sys
|
||||
import os, sys, pickle
|
||||
from PyQt4 import QtCore, QtGui
|
||||
import TentiaWindows
|
||||
import Windows
|
||||
|
||||
class Tentia:
|
||||
|
||||
|
@ -19,36 +18,52 @@ class Tentia:
|
|||
print "quit"
|
||||
|
||||
def setup_windows(self):
|
||||
self.preferences = TentiaWindows.Preferences(self)
|
||||
#self.timeline = TentiaWindows.Timeline(self)
|
||||
#self.mentions = TentiaWindows.Timeline(self, action="mentions", title="Mentions")
|
||||
self.preferences = Windows.Preferences(self)
|
||||
#self.timeline = Windows.Timeline(self)
|
||||
#self.mentions = Windows.Timeline(self, action="mentions", title="Mentions")
|
||||
|
||||
def resources_path(self):
|
||||
return "../"
|
||||
return os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
|
||||
|
||||
def resources_uri(self):
|
||||
return "file://localhost" + os.path.abspath(os.path.join(os.path.dirname(__file__), '..', "WebKit"))
|
||||
return "file://localhost" + os.path.abspath(os.path.join(self.resources_path(), "WebKit"))
|
||||
|
||||
|
||||
def login_with_entity(self, entity):
|
||||
self.controller.setStringForKey("entity", entity)
|
||||
self.oauth_implementation = TentiaWindows.OauthImplementation(self)
|
||||
|
||||
def controller():
|
||||
return self.controller;
|
||||
self.controller.setStringForKey(entity, "entity")
|
||||
self.oauth_implementation = Windows.Oauth(self)
|
||||
|
||||
|
||||
class Controller(QtCore.QObject):
|
||||
|
||||
user_defaults = {}
|
||||
def __init__(self):
|
||||
QtCore.QObject.__init__(self)
|
||||
self.config_path = os.path.expanduser('~/.tentia.cfg')
|
||||
if os.access(self.config_path, os.R_OK):
|
||||
with open(self.config_path, 'r') as f:
|
||||
self.config = pickle.load(f)
|
||||
else:
|
||||
print self.config_path + " is not readable"
|
||||
self.config = {}
|
||||
|
||||
@QtCore.pyqtSlot(str, str)
|
||||
def setStringForKey(self, string, key):
|
||||
self.user_defaults[string] = key
|
||||
string, key = str(string), str(key)
|
||||
self.config[key] = string
|
||||
try:
|
||||
with open(self.config_path, 'w+') as f:
|
||||
pickle.dump(self.config, f)
|
||||
except IOError:
|
||||
print self.config_path + " is not writable"
|
||||
print "I/O error({0}): {1}".format(e.errno, e.strerror)
|
||||
|
||||
@QtCore.pyqtSlot(str, result=str)
|
||||
def stringForKey(self, key):
|
||||
if key in self.user_defaults:
|
||||
return self.user_defaults[key]
|
||||
key = str(key)
|
||||
if key in self.config:
|
||||
return self.config[key]
|
||||
else:
|
||||
return ""
|
||||
|
||||
|
||||
class Console(QtCore.QObject):
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
from PyQt4 import QtCore, QtGui, QtWebKit
|
||||
import Helper
|
||||
|
||||
class Preferences:
|
||||
|
||||
|
@ -12,10 +13,10 @@ class Preferences:
|
|||
self.window.resize(480, 186)
|
||||
self.window.setMinimumSize(480, 186)
|
||||
self.window.setMaximumSize(480, 186)
|
||||
self.window.move(0, 0)
|
||||
self.window.move(1400, 700)
|
||||
|
||||
# image view
|
||||
image = QtGui.QPixmap(self.app.resources_path() + "Icon.png")
|
||||
image = QtGui.QPixmap(self.app.resources_path() + "/Icon.png")
|
||||
image_view = QtGui.QLabel(self.window)
|
||||
image_view.setGeometry(20, 20, 146, 146)
|
||||
image_view.setPixmap(image)
|
||||
|
@ -35,6 +36,7 @@ class Preferences:
|
|||
|
||||
# text field
|
||||
self.text_field = QtGui.QLineEdit(self.window)
|
||||
self.text_field.setText("http://jeena.net")
|
||||
self.text_field.setPlaceholderText("https://example.tent.is")
|
||||
self.text_field.setGeometry(194, 84, 262, 22)
|
||||
self.window.connect(self.text_field, QtCore.SIGNAL('returnPressed()'), self.on_login_button_clicked)
|
||||
|
@ -119,24 +121,14 @@ class Timeline:
|
|||
|
||||
self.web_view.execute_script(script)
|
||||
|
||||
class OauthImplementation:
|
||||
class Oauth:
|
||||
|
||||
def __init__(self, app):
|
||||
self.app = app
|
||||
self.web_view = QtWebKit.QWebView()
|
||||
self.web_view.settings().setAttribute(QtWebKit.QWebSettings.DeveloperExtrasEnabled, True)
|
||||
self.init_web_view()
|
||||
frame = self.web_view.page().mainFrame()
|
||||
frame.addToJavaScriptWindowObject("controller", self.app.controller)
|
||||
frame.addToJavaScriptWindowObject("console", self.app.console)
|
||||
insp = QtWebKit.QWebInspector()
|
||||
insp.setPage(self.web_view.page())
|
||||
insp.show()
|
||||
self.window = Helper.WebViewCreator(self.app, self)
|
||||
|
||||
def init_web_view(self):
|
||||
self.web_view.loadFinished.connect(self.load_finished)
|
||||
self.web_view.load(QtCore.QUrl(self.app.resources_uri() + "/index.html"))
|
||||
def load_finished(self, ok):
|
||||
if ok:
|
||||
script = "function HostAppGo() { start('oauth'); }"
|
||||
self.window.view.page().mainFrame().evaluateJavaScript(script)
|
||||
|
||||
def load_finished(self, widget):
|
||||
script = "function HostAppGo() { start('oauth'); }"
|
||||
self.web_view.page().mainFrame().evaluateJavaScript(script)
|
|
@ -1,10 +1,11 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>Tentia</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<link rel="stylesheet" href="css/default.css" type="text/css" />
|
||||
<title>Tentia</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<link rel="stylesheet" href="css/default.css" type="text/css" />
|
||||
<script data-main="scripts/main" src="scripts/lib/vendor/require-jquery.js"></script>
|
||||
<script type="text/javascript">alert(go)</script>
|
||||
</head>
|
||||
<body>
|
||||
</body>
|
||||
|
|
|
@ -27,13 +27,13 @@ function(HostApp, Paths, Hmac) {
|
|||
"write_followings": "Follow ne entities"
|
||||
}
|
||||
};
|
||||
|
||||
this.register_data = null;
|
||||
this.profile = null;
|
||||
this.state = null;
|
||||
}
|
||||
|
||||
Oauth.prototype.authenticate = function() {
|
||||
|
||||
var entity = HostApp.stringForKey("entity");
|
||||
|
||||
if (entity && (entity.startsWith("http://") || entity.startsWith("https://"))) {
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
var tentia_instance;
|
||||
var tentia_cache = {};
|
||||
var OS_TYPE = "mac";
|
||||
|
||||
requirejs.config({
|
||||
baseUrl: 'scripts'
|
||||
|
@ -9,7 +8,6 @@ requirejs.config({
|
|||
function start(view) {
|
||||
|
||||
if (view == "oauth") {
|
||||
|
||||
require(["controller/Oauth"], function(Oauth) {
|
||||
|
||||
tentia_instance = new Oauth();
|
||||
|
@ -76,7 +74,7 @@ function debug(string) {
|
|||
function go() { // wait untill everything is loaded
|
||||
setTimeout(function() {
|
||||
|
||||
if (HostAppGo != undefined) {
|
||||
if (typeof HostAppGo != typeof __not_defined__) {
|
||||
|
||||
HostAppGo();
|
||||
|
||||
|
@ -90,4 +88,3 @@ function go() { // wait untill everything is loaded
|
|||
}
|
||||
|
||||
go();
|
||||
|
||||
|
|
Reference in a new issue