|
|
@@ -25,11 +25,13 @@ from carla_config import * |
|
|
|
# Imports (Global) |
|
|
|
|
|
|
|
if config_UseQt5: |
|
|
|
from PyQt5.QtCore import pyqtSlot, QPoint, QThread, QUrl |
|
|
|
from PyQt5.QtCore import pyqtSlot, QPoint, QThread, QSize, QUrl |
|
|
|
from PyQt4.QtGui import QImage, QPainter |
|
|
|
from PyQt5.QtWidgets import QMainWindow |
|
|
|
from PyQt5.QtWebKitWidgets import QWebElement, QWebSettings, QWebView |
|
|
|
else: |
|
|
|
from PyQt4.QtCore import pyqtSlot, QPoint, QThread, QUrl |
|
|
|
from PyQt4.QtCore import pyqtSlot, QPoint, QThread, QSize, QUrl |
|
|
|
from PyQt4.QtGui import QImage, QPainter |
|
|
|
from PyQt4.QtGui import QMainWindow |
|
|
|
from PyQt4.QtWebKit import QWebElement, QWebSettings, QWebView |
|
|
|
|
|
|
@@ -153,7 +155,10 @@ class HostWindow(QMainWindow): |
|
|
|
self.setCentralWidget(self.fWebview) |
|
|
|
self.setContentsMargins(0, 0, 0, 0) |
|
|
|
|
|
|
|
mainFrame = self.fWebview.page().mainFrame() |
|
|
|
page = self.fWebview.page() |
|
|
|
page.setViewportSize(QSize(980, 600)) |
|
|
|
|
|
|
|
mainFrame = page.mainFrame() |
|
|
|
mainFrame.setScrollBarPolicy(Qt.Horizontal, Qt.ScrollBarAlwaysOff) |
|
|
|
mainFrame.setScrollBarPolicy(Qt.Vertical, Qt.ScrollBarAlwaysOff) |
|
|
|
|
|
|
@@ -214,11 +219,44 @@ class HostWindow(QMainWindow): |
|
|
|
if size.width() <= 10 or size.height() <= 10: |
|
|
|
return |
|
|
|
|
|
|
|
self.fSizeSetup = True |
|
|
|
self.fDocElemement = None |
|
|
|
|
|
|
|
self.setFixedSize(size) |
|
|
|
self.fCurrentFrame.setScrollPosition(QPoint(15, 0)) |
|
|
|
# render web frame to image |
|
|
|
image = QImage(self.fWebview.page().viewportSize(), QImage.Format_ARGB32_Premultiplied) |
|
|
|
image.fill(Qt.transparent) |
|
|
|
|
|
|
|
painter = QPainter(image) |
|
|
|
self.fCurrentFrame.render(painter) |
|
|
|
painter.end() |
|
|
|
|
|
|
|
#image.save("/tmp/test.png") |
|
|
|
|
|
|
|
# get coordinates and size from image |
|
|
|
x = -1 |
|
|
|
#y = -1 |
|
|
|
lastx = -1 |
|
|
|
lasty = -1 |
|
|
|
|
|
|
|
for h in range(0, image.height()): |
|
|
|
hasNonTransPixels = False |
|
|
|
|
|
|
|
for w in range(0, image.width()): |
|
|
|
if image.pixel(w, h) not in (0, 0xff070707): |
|
|
|
hasNonTransPixels = True |
|
|
|
if x == -1 or x > w: |
|
|
|
x = w |
|
|
|
lastx = max(lastx, w) |
|
|
|
|
|
|
|
if hasNonTransPixels: |
|
|
|
#if y == -1: |
|
|
|
#y = h |
|
|
|
lasty = h |
|
|
|
|
|
|
|
# set size and position accordingly |
|
|
|
if -1 not in (x, lastx, lasty): |
|
|
|
self.setFixedSize(lastx-x, lasty) |
|
|
|
self.fCurrentFrame.setScrollPosition(QPoint(x, 0)) |
|
|
|
else: |
|
|
|
self.setFixedSize(size) |
|
|
|
self.fCurrentFrame.setScrollPosition(QPoint(15, 0)) |
|
|
|
|
|
|
|
# set initial values |
|
|
|
for index in self.fPortValues.keys(): |
|
|
@@ -226,11 +264,14 @@ class HostWindow(QMainWindow): |
|
|
|
value = self.fPortValues[index] |
|
|
|
self.fCurrentFrame.evaluateJavaScript("icongui.setPortValue('%s', %f)" % (symbol, value)) |
|
|
|
|
|
|
|
# final setup |
|
|
|
self.fCanSetValues = True |
|
|
|
self.fSizeSetup = True |
|
|
|
self.fDocElemement = None |
|
|
|
|
|
|
|
if self.fNeedsShow: |
|
|
|
self.show() |
|
|
|
|
|
|
|
self.fCanSetValues = True |
|
|
|
|
|
|
|
def checkForRepaintChanges(self): |
|
|
|
if not self.fWasRepainted: |
|
|
|
return |
|
|
|