From 9ebc92839196f1e9245c827fa145533f7d5bf45a Mon Sep 17 00:00:00 2001 From: Joey Payne Date: Fri, 7 Feb 2014 21:02:02 -0700 Subject: [PATCH] Added pyqt example files and updated some test code. --- qttest-alt.py | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++ qttest.py | 62 +++++++++++++++++++++++++++++++++++++++++++++++ test.py | 1 - testclasses.py | 16 ++++++------ 4 files changed, 136 insertions(+), 9 deletions(-) create mode 100644 qttest-alt.py create mode 100644 qttest.py diff --git a/qttest-alt.py b/qttest-alt.py new file mode 100644 index 0000000..ee3edd4 --- /dev/null +++ b/qttest-alt.py @@ -0,0 +1,66 @@ +from testclasses import * +from PyQt4 import QtGui, QtCore +import sys, array +from cStringIO import StringIO + +class JGUIWidget(QtGui.QWidget): + def __init__(self, width, height, parent=None): + super(JGUIWidget, self).__init__(parent) + self.surf = TestSurface([width, height]) + self.setGeometry(0,0, width, height) + self.width = width + self.height = height + self.setWindowTitle("JGUI Qt") + redrawTimer = QtCore.QTimer(self) + self.connect(redrawTimer, QtCore.SIGNAL("timeout()"), self, QtCore.SLOT("update()")) + redrawTimer.start(1000/60) + self.setCursor(QtGui.QCursor(QtCore.Qt.BlankCursor)) + self.button = QtGui.QPushButton('Test', self) + self.button.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor)) + layout = QtGui.QVBoxLayout(self) + layout.setAlignment(QtCore.Qt.AlignBottom) + layout.addWidget(self.button) + + self.paintSurface = QtGui.QPainter(self) + + def mousePressEvent(self, event): + if event.button() == QtCore.Qt.LeftButton: + self.surf.inject_mouse_down('mouse-left') + if event.button() == QtCore.Qt.RightButton: + self.surf.inject_mouse_down('mouse-right') + if event.button() == QtCore.Qt.MiddleButton: + self.surf.inject_mouse_down('mouse-middle') + + def mouseReleaseEvent(self, event): + if event.button() == QtCore.Qt.LeftButton: + self.surf.inject_mouse_up('mouse-left') + if event.button() == QtCore.Qt.RightButton: + self.surf.inject_mouse_up('mouse-right') + if event.button() == QtCore.Qt.MiddleButton: + self.surf.inject_mouse_up('mouse-middle') + + def resizeEvent(self, event): + size = event.size() + self.width = size.width() + self.height = size.height() + self.surf.notify_window_resize(size.width(), size.height()) + + def eventFilter(self, source, event): + if event.type() == QtCore.QEvent.MouseMove and self is source: + pos = event.pos() + self.surf.inject_mouse_position([pos.x(), pos.y()]) + return QtGui.QMainWindow.eventFilter(self, source, event) + + def paintEvent(self, event): + self.surf.draw() + img = QtGui.QImage(self.surf.csurface.get_data(), self.width, self.height, QtGui.QImage.Format_ARGB32) + self.paintSurface.begin(self) + self.paintSurface.drawImage(0, 0, img) + self.paintSurface.end() + +if __name__ == "__main__": + app = QtGui.QApplication(sys.argv) + widget = JGUIWidget(800, 600) + widget.show() + app.installEventFilter(widget) + sys.exit(app.exec_()) diff --git a/qttest.py b/qttest.py new file mode 100644 index 0000000..e5e45b3 --- /dev/null +++ b/qttest.py @@ -0,0 +1,62 @@ +from testclasses import * +from PyQt4 import QtGui, QtCore +import sys, array +from cStringIO import StringIO + +class JGUIWidget(QtGui.QWidget): + def __init__(self, width, height, parent=None): + super(JGUIWidget, self).__init__(parent) + self.surf = TestSurface([width, height]) + self.setGeometry(0,0, width, height) + self.width = width + self.height = height + self.setWindowTitle("JGUI Qt") + redrawTimer = QtCore.QTimer(self) + self.connect(redrawTimer, QtCore.SIGNAL("timeout()"), self, QtCore.SLOT("update()")) + redrawTimer.start(1000/60) + + self.paintSurface = QtGui.QLabel(self) + self.paintSurface.setGeometry(0, 0, width, height) + self.paintSurface.show() + + def mousePressEvent(self, event): + if event.button() == QtCore.Qt.LeftButton: + self.surf.inject_mouse_down('mouse-left') + if event.button() == QtCore.Qt.RightButton: + self.surf.inject_mouse_down('mouse-right') + if event.button() == QtCore.Qt.MiddleButton: + self.surf.inject_mouse_down('mouse-middle') + + def mouseReleaseEvent(self, event): + if event.button() == QtCore.Qt.LeftButton: + self.surf.inject_mouse_up('mouse-left') + if event.button() == QtCore.Qt.RightButton: + self.surf.inject_mouse_up('mouse-right') + if event.button() == QtCore.Qt.MiddleButton: + self.surf.inject_mouse_up('mouse-middle') + + def resizeEvent(self, event): + size = event.size() + self.width = size.width() + self.height = size.height() + self.paintSurface.setGeometry(0, 0, self.width, self.height) + self.surf.notify_window_resize(size.width(), size.height()) + + def eventFilter(self, source, event): + if event.type() == QtCore.QEvent.MouseMove: + pos = event.pos() + self.surf.inject_mouse_position([pos.x(), pos.y()]) + return QtGui.QMainWindow.eventFilter(self, source, event) + + def paintEvent(self, event): + self.surf.draw() + img = QtGui.QImage(self.surf.csurface.get_data(), self.width, self.height, QtGui.QImage.Format_ARGB32) + self.paintPixmap = QtGui.QPixmap.fromImage(img) + self.paintSurface.setPixmap(self.paintPixmap) + +if __name__ == "__main__": + app = QtGui.QApplication(sys.argv) + widget = JGUIWidget(800, 600) + widget.show() + app.installEventFilter(widget) + sys.exit(app.exec_()) diff --git a/test.py b/test.py index befbc13..72333e8 100644 --- a/test.py +++ b/test.py @@ -27,7 +27,6 @@ class Test(ShowBase): c.setHasUvs(True) screen = render2d.attachNewNode(c.generate()) screen.setTransparency(TransparencyAttrib.MAlpha) - screen.setTwoSided(True) self.surf = TestSurface([width, height]) diff --git a/testclasses.py b/testclasses.py index ae3acfc..62a6d43 100644 --- a/testclasses.py +++ b/testclasses.py @@ -28,20 +28,20 @@ class TestSurface(Surface): draggable=True)) self.root_window.add_child(my_win) - self.root_window.add_child(TestWindow('child2', position=[200,200], - size=[200,200], draggable=True)) + #self.root_window.add_child(TestWindow('child2', position=[200,200], + # size=[200,200], draggable=True)) self.root_window.add_child(ImageWindow('image', image_path=os.path.join(IMG_DIR, 'wrench.png'), position=[0,200], size=[200,200], draggable=True, resizable=True)) - child3 = TestWindow('child3', position=[300,300], - size=[200,200], draggable=True) - child3.add_child(TestWindow('child3-1', position=[10,10], - size=[50,50], draggable=True, - resizable=True)) + #child3 = TestWindow('child3', position=[300,300], + # size=[200,200], draggable=True) + #child3.add_child(TestWindow('child3-1', position=[10,10], + # size=[50,50], draggable=True, + # resizable=True)) - self.root_window.add_child(child3) + #self.root_window.add_child(child3) class TestWindow(Window):