pygpibtoolkit/plotter/hpgl_qt.py

Thu, 24 May 2018 23:22:37 +0200

author
David Douard <david.douard@logilab.fr>
date
Thu, 24 May 2018 23:22:37 +0200
changeset 104
916c255b3079
parent 91
f2a8f688dbc0
permissions
-rw-r--r--

[plotter] flake8

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
21
66b7cd43bac1 Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
97 def parse(self, data):
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 68
diff changeset
98 super().parse(data)
21
66b7cd43bac1 Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
99 self.update()
66b7cd43bac1 Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
100 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
101
21
66b7cd43bac1 Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
102 def minimumSizeHint(self):
66b7cd43bac1 Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
103 return QtCore.QSize(100, 100)
66b7cd43bac1 Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
104
66b7cd43bac1 Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
105 def sizeHint(self):
66b7cd43bac1 Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
106 return QtCore.QSize(400, 400)
66b7cd43bac1 Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
107
66b7cd43bac1 Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
108 def resizeEvent(self, event):
66b7cd43bac1 Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
109 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
110 QtWidgets.QWidget.resizeEvent(self, event)
21
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 plot_lines(self, points):
66b7cd43bac1 Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
113 if len(points) == 1:
66b7cd43bac1 Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
114 return
66b7cd43bac1 Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
115 pa = QtGui.QPainterPath()
66b7cd43bac1 Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
116 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
117 self.qscene.addPath(pa, self.qpen)
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 68
diff changeset
118
21
66b7cd43bac1 Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
119 def plot_symbols(self, points):
66b7cd43bac1 Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
120 pass
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 68
diff changeset
121
21
66b7cd43bac1 Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
122 def plot_string(self, s):
66b7cd43bac1 Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
123 cw, ch = self.get_char_size()
66b7cd43bac1 Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
124 # 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
125 # computed string positionning in HPGL...
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 68
diff changeset
126 t0 = self.qscene.addSimpleText(" ", self.qfont)
21
66b7cd43bac1 Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
127 br = t0.boundingRect()
66b7cd43bac1 Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
128 mw = br.width()
66b7cd43bac1 Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
129 mh = br.height()
66b7cd43bac1 Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
130 self.qscene.removeItem(t0)
66b7cd43bac1 Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
131 # 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
132 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
133 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
134 x, y = self.pos
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 68
diff changeset
135 t.moveBy(x, y)
21
66b7cd43bac1 Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
136 br = t.boundingRect()
37
e0790756059d constant adjustments for string plots
David Douard <david.douard@logilab.fr>
parents: 36
diff changeset
137 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
138
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 68
diff changeset
139
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 68
diff changeset
140 if __name__ == '__main__':
21
66b7cd43bac1 Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
141 import sys
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 68
diff changeset
142 a = QtWidgets.QApplication(sys.argv)
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 68
diff changeset
143 mw = QtWidgets.QMainWindow()
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 68
diff changeset
144 w = QtWidgets.QWidget(mw)
21
66b7cd43bac1 Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
145 mw.setCentralWidget(w)
66b7cd43bac1 Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
146
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 68
diff changeset
147 l = QtWidgets.QVBoxLayout(w)
21
66b7cd43bac1 Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
148 p = QHPGLPlotterWidget(w)
66b7cd43bac1 Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
149 l.addWidget(p, 1)
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 68
diff changeset
150 b = QtWidgets.QPushButton("Replot", w)
21
66b7cd43bac1 Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
151 l.addWidget(b)
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 68
diff changeset
152
21
66b7cd43bac1 Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
153 def plot():
66b7cd43bac1 Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
154 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
155
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 68
diff changeset
156 b.pressed.connect(plot)
21
66b7cd43bac1 Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
157 mw.show()
66b7cd43bac1 Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
158 plot()
66b7cd43bac1 Add HPGL plotter backend for Qt4
David Douard <david.douard@logilab.fr>
parents:
diff changeset
159 a.exec_()

mercurial