Wed, 16 May 2018 10:07:26 +0200
project moved to bitbucket
21
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
66
2a97995628a3
added copyright header to every python file
David Douard <david.douard@logilab.fr>
parents:
40
diff
changeset
|
2 | # This program is free software; you can redistribute it and/or modify it under |
2a97995628a3
added copyright header to every python file
David Douard <david.douard@logilab.fr>
parents:
40
diff
changeset
|
3 | # the terms of the GNU General Public License as published by the Free Software |
2a97995628a3
added copyright header to every python file
David Douard <david.douard@logilab.fr>
parents:
40
diff
changeset
|
4 | # Foundation; either version 2 of the License, or (at your option) any later |
2a97995628a3
added copyright header to every python file
David Douard <david.douard@logilab.fr>
parents:
40
diff
changeset
|
5 | # version. |
2a97995628a3
added copyright header to every python file
David Douard <david.douard@logilab.fr>
parents:
40
diff
changeset
|
6 | # |
2a97995628a3
added copyright header to every python file
David Douard <david.douard@logilab.fr>
parents:
40
diff
changeset
|
7 | # This program is distributed in the hope that it will be useful, but WITHOUT |
2a97995628a3
added copyright header to every python file
David Douard <david.douard@logilab.fr>
parents:
40
diff
changeset
|
8 | # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
2a97995628a3
added copyright header to every python file
David Douard <david.douard@logilab.fr>
parents:
40
diff
changeset
|
9 | # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details |
2a97995628a3
added copyright header to every python file
David Douard <david.douard@logilab.fr>
parents:
40
diff
changeset
|
10 | # |
2a97995628a3
added copyright header to every python file
David Douard <david.douard@logilab.fr>
parents:
40
diff
changeset
|
11 | # You should have received a copy of the GNU General Public License along with |
2a97995628a3
added copyright header to every python file
David Douard <david.douard@logilab.fr>
parents:
40
diff
changeset
|
12 | # this program; if not, write to the Free Software Foundation, Inc., |
2a97995628a3
added copyright header to every python file
David Douard <david.douard@logilab.fr>
parents:
40
diff
changeset
|
13 | # 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
14 | """ Copyright (c) 2007-2018 David Douard (Paris, FRANCE). |
91
f2a8f688dbc0
project moved to bitbucket
David Douard <david.douard@logilab.fr>
parents:
87
diff
changeset
|
15 | https://bitbucket.org/dddouard/pygpibtoolkit -- mailto:david.douard@sdfa3.org |
66
2a97995628a3
added copyright header to every python file
David Douard <david.douard@logilab.fr>
parents:
40
diff
changeset
|
16 | """ |
2a97995628a3
added copyright header to every python file
David Douard <david.douard@logilab.fr>
parents:
40
diff
changeset
|
17 | |
21
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
18 | import numpy |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
19 | import math |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
20 | # import new # monkey patching... |
21
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
21 | |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
22 | from PyQt5 import QtWidgets, QtGui, QtCore |
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
23 | from PyQt5.QtCore import Qt |
21
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
24 | |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
25 | from pygpibtoolkit.plotter.hpgl_parser import HPGLParser |
21
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
26 | |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
27 | |
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
28 | class QHPGLPlotterWidget(QtWidgets.QWidget, HPGLParser): |
21
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
29 | pen_styles = {2: [0.4, 0.6], |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
30 | 3: [0.6, 0.4], |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
31 | 4: [0.7, 0.1, 0.1, 0.1], |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
32 | 5: [0.6, 0.1, 0.2, 0.1], |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
33 | 6: [0.45, 0.1, 0.1, 0.2, 0.1, 0.05], |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
34 | } |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
35 | pen_colors = ["black", "green", "red", "blue", "yellow", "cyan", "magenta", |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
36 | "darkred", "darkblue"] |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
37 | |
21
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
38 | def __init__(self, parent=None): |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
39 | super().__init__(parent) |
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
40 | l = QtWidgets.QVBoxLayout(self) |
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
41 | l.setContentsMargins(1, 1, 1, 1) |
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
42 | self.qview = QtWidgets.QGraphicsView(self) |
35
3b7a38af5c42
Refactored the preference system for the qt gpib plotter app. One can now set the colors for plotting pens.
David Douard <david.douard@logilab.fr>
parents:
32
diff
changeset
|
43 | self.qview.setRenderHints(QtGui.QPainter.Antialiasing) |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
44 | self.qview.scale(0.5, -0.5) |
23
cb97962a1ae9
make qplotter a working app: can new load several hpgl files à display them; have a preference system
David Douard <david.douard@logilab.fr>
parents:
21
diff
changeset
|
45 | l = self.layout() |
cb97962a1ae9
make qplotter a working app: can new load several hpgl files à display them; have a preference system
David Douard <david.douard@logilab.fr>
parents:
21
diff
changeset
|
46 | l.addWidget(self.qview) |
cb97962a1ae9
make qplotter a working app: can new load several hpgl files à display them; have a preference system
David Douard <david.douard@logilab.fr>
parents:
21
diff
changeset
|
47 | self.setBackgroundRole(QtGui.QPalette.Base) |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
48 | self.setSizePolicy(QtWidgets.QSizePolicy.Expanding, |
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
49 | QtWidgets.QSizePolicy.Expanding) |
23
cb97962a1ae9
make qplotter a working app: can new load several hpgl files à display them; have a preference system
David Douard <david.douard@logilab.fr>
parents:
21
diff
changeset
|
50 | self.clear() |
cb97962a1ae9
make qplotter a working app: can new load several hpgl files à display them; have a preference system
David Douard <david.douard@logilab.fr>
parents:
21
diff
changeset
|
51 | HPGLParser.__init__(self) |
21
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
52 | |
23
cb97962a1ae9
make qplotter a working app: can new load several hpgl files à display them; have a preference system
David Douard <david.douard@logilab.fr>
parents:
21
diff
changeset
|
53 | def clear(self): |
21
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
54 | self.qpen = QtGui.QPen(QtCore.Qt.blue) |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
55 | self.qbrush = QtGui.QBrush(QtCore.Qt.blue) |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
56 | self.qfont = QtGui.QFont('Courier') |
21
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
57 | self.qantialiased = False |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
58 | self.qtransformed = False |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
59 | self.qscene = QtWidgets.QGraphicsScene() |
23
cb97962a1ae9
make qplotter a working app: can new load several hpgl files à display them; have a preference system
David Douard <david.douard@logilab.fr>
parents:
21
diff
changeset
|
60 | self.qview.setScene(self.qscene) |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
61 | |
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
62 | @property |
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
63 | def pen_width(self): |
21
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
64 | return self._pen_width |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
65 | |
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
66 | @pen_width.setter |
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
67 | def pen_width(self, value): |
21
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
68 | value = float(value) |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
69 | # print "set pen width", value, value*300.0/75.0 |
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
70 | # self.qpen.setWidthF(value*300.0/75.0) |
21
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
71 | self._pen_width = value |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
72 | |
21
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
73 | def LT(self): |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
74 | super().LT() |
21
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
75 | if self.line_type == 0: |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
76 | self.qpen.setStyle(Qt.SolidLine) |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
77 | elif self.line_type == 1: |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
78 | self.qpen.setStyle(Qt.DotLine) |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
79 | else: |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
80 | pattern = numpy.array(self.pen_styles[self.line_type]) |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
81 | x0, x1, y0, y1 = self.scale |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
82 | dist = math.sqrt((x1-x0)**2 + (y1-y0)**2) |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
83 | pattern = self.pattern_len*dist/100.0 * pattern |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
84 | if self.qpen.widthF() > 0: |
21
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
85 | pattern = pattern/self.qpen.widthF() |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
86 | self.qpen.setDashPattern(pattern.tolist()) |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
87 | |
21
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
88 | def SP(self): |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
89 | super().SP() |
68
8ec1c26a4a99
Small fixes to HPGL plotter (be a little bit more robust)
David Douard <david.douard@logilab.fr>
parents:
66
diff
changeset
|
90 | color = self.pen_colors[self.pen % len(self.pen_colors)] |
35
3b7a38af5c42
Refactored the preference system for the qt gpib plotter app. One can now set the colors for plotting pens.
David Douard <david.douard@logilab.fr>
parents:
32
diff
changeset
|
91 | if isinstance(color, tuple): |
3b7a38af5c42
Refactored the preference system for the qt gpib plotter app. One can now set the colors for plotting pens.
David Douard <david.douard@logilab.fr>
parents:
32
diff
changeset
|
92 | color = QtGui.QColor(*color) |
3b7a38af5c42
Refactored the preference system for the qt gpib plotter app. One can now set the colors for plotting pens.
David Douard <david.douard@logilab.fr>
parents:
32
diff
changeset
|
93 | else: |
3b7a38af5c42
Refactored the preference system for the qt gpib plotter app. One can now set the colors for plotting pens.
David Douard <david.douard@logilab.fr>
parents:
32
diff
changeset
|
94 | color = QtGui.QColor(color) |
3b7a38af5c42
Refactored the preference system for the qt gpib plotter app. One can now set the colors for plotting pens.
David Douard <david.douard@logilab.fr>
parents:
32
diff
changeset
|
95 | self.qpen.setColor(color) |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
96 | |
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
97 | #def parse(self, data): |
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
98 | # super().parse(data) |
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
99 | # self.resize(self.size()) |
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
100 | |
21
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
101 | def parse(self, data): |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
102 | super().parse(data) |
21
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
103 | self.update() |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
104 | self.qview.fitInView(self.qscene.sceneRect(), Qt.KeepAspectRatio) |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
105 | |
21
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
106 | def minimumSizeHint(self): |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
107 | return QtCore.QSize(100, 100) |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
108 | |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
109 | def sizeHint(self): |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
110 | return QtCore.QSize(400, 400) |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
111 | |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
112 | def resizeEvent(self, event): |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
113 | self.qview.fitInView(self.qscene.sceneRect(), Qt.KeepAspectRatio) |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
114 | QtWidgets.QWidget.resizeEvent(self, event) |
21
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
115 | |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
116 | def plot_lines(self, points): |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
117 | if len(points) == 1: |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
118 | return |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
119 | pa = QtGui.QPainterPath() |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
120 | pa.addPolygon(QtGui.QPolygonF([QtCore.QPointF(*p) for p in points])) |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
121 | self.qscene.addPath(pa, self.qpen) |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
122 | |
21
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
123 | def plot_symbols(self, points): |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
124 | pass |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
125 | |
21
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
126 | def plot_string(self, s): |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
127 | cw, ch = self.get_char_size() |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
128 | # this is very ugly and so, but I don't understand haw is |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
129 | # computed string positionning in HPGL... |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
130 | t0 = self.qscene.addSimpleText(" ", self.qfont) |
21
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
131 | br = t0.boundingRect() |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
132 | mw = br.width() |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
133 | mh = br.height() |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
134 | self.qscene.removeItem(t0) |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
135 | # don't ask me why theses constants are here, they seem OK, that's all |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
136 | t = self.qscene.addSimpleText(s, self.qfont) |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
137 | t.setTransform(QtGui.QTransform(1.0 * cw/mw, 0, 0, -1.6 * ch/mh, 0, 0)) |
21
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
138 | x, y = self.pos |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
139 | t.moveBy(x, y) |
21
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
140 | br = t.boundingRect() |
37
e0790756059d
constant adjustments for string plots
David Douard <david.douard@logilab.fr>
parents:
36
diff
changeset
|
141 | t.moveBy(-0.5*cw+8, math.sqrt(2)*ch - 13) |
21
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
142 | |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
143 | |
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
144 | if __name__ == '__main__': |
21
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
145 | import sys |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
146 | a = QtWidgets.QApplication(sys.argv) |
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
147 | mw = QtWidgets.QMainWindow() |
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
148 | w = QtWidgets.QWidget(mw) |
21
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
149 | mw.setCentralWidget(w) |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
150 | |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
151 | l = QtWidgets.QVBoxLayout(w) |
21
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
152 | p = QHPGLPlotterWidget(w) |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
153 | l.addWidget(p, 1) |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
154 | b = QtWidgets.QPushButton("Replot", w) |
21
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
155 | l.addWidget(b) |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
156 | |
21
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
157 | def plot(): |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
158 | p.parse(open(sys.argv[1]).read()) |
87
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
159 | |
59a0946aa3d1
port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents:
68
diff
changeset
|
160 | b.pressed.connect(plot) |
21
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
161 | mw.show() |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
162 | plot() |
66b7cd43bac1
Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
163 | a.exec_() |