pygpibtoolkit/plotter/qgpib_plotter.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 98
4cbd3d410230
permissions
-rw-r--r--

[plotter] flake8

66
2a97995628a3 added copyright header to every python file
David Douard <david.douard@logilab.fr>
parents: 62
diff changeset
1 # 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: 62
diff changeset
2 # 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: 62
diff changeset
3 # 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: 62
diff changeset
4 # version.
22
b2f4646161be Begin of a HPGL plotter application (PyQt4)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
5 #
66
2a97995628a3 added copyright header to every python file
David Douard <david.douard@logilab.fr>
parents: 62
diff changeset
6 # 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: 62
diff changeset
7 # 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: 62
diff changeset
8 # 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: 62
diff changeset
9 #
2a97995628a3 added copyright header to every python file
David Douard <david.douard@logilab.fr>
parents: 62
diff changeset
10 # 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: 62
diff changeset
11 # 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: 62
diff changeset
12 # 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: 78
diff changeset
13 """ Copyright (c) 2007-2018 David Douard (Paris, FRANCE).
91
f2a8f688dbc0 project moved to bitbucket
David Douard <david.douard@logilab.fr>
parents: 87
diff changeset
14 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: 62
diff changeset
15 """
22
b2f4646161be Begin of a HPGL plotter application (PyQt4)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
16
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
17 import os
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
18 import sys
27
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
19 import time
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
20
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
21 from PyQt5 import QtWidgets, QtGui, QtCore, QtPrintSupport, uic
98
4cbd3d410230 [plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
22 from PyQt5.QtCore import Qt, pyqtSignal
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
23
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
24 from pygpibtoolkit.plotter.hpgl_qt import QHPGLPlotterWidget
98
4cbd3d410230 [plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
25 from pygpibtoolkit.plotter.gpib_plotter import GPIBplotter
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
26
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
27 from pygpibtoolkit.qt5.qpreferences import IntItem, UnicodeItem, ColorItem
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
28 from pygpibtoolkit.qt5.qpreferences import BoolItem
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
29 from pygpibtoolkit.qt5.qpreferences import PointItem, SizeItem, ByteArrayItem
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
30 from pygpibtoolkit.qt5.qpreferences import AbstractPreferences
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
31 from pygpibtoolkit.qt5.qpreferenceseditor import PreferencesEditor
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: 22
diff changeset
32
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
33 from pygpibtoolkit.tools import str_num_key
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
34
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
35
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
36 HERE = os.path.abspath(os.path.dirname(__file__))
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
37
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
38
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
39 try:
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
40 form_class, base_class = uic.loadUiType(
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
41 os.path.join(HERE, "qhpgl_plotter.ui"),
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
42 from_imports=True, import_from='pygpibtoolkit.plotter',)
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
43 except Exception as e:
98
4cbd3d410230 [plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
44 from pygpibtoolkit.plotter.qhpgl_plotter_ui import (
4cbd3d410230 [plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
45 Ui_MainWindow as form_class)
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
46
22
b2f4646161be Begin of a HPGL plotter application (PyQt4)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
47
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: 22
diff changeset
48 class Preferences(AbstractPreferences):
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
49 ORGANISATION = "PyGPIBToolkit"
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
50 APPLICATION = "qgpib_plotter"
22
b2f4646161be Begin of a HPGL plotter application (PyQt4)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
51
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: 34
diff changeset
52 _pos = PointItem()
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: 34
diff changeset
53 _size = SizeItem()
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: 34
diff changeset
54 _appState = ByteArrayItem()
27
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
55
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: 34
diff changeset
56 device = UnicodeItem(default='/dev/ttyUSB0',
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: 34
diff changeset
57 name=u'device',
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: 34
diff changeset
58 description=u'GPIB device',
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: 34
diff changeset
59 group="GPIB settings")
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: 34
diff changeset
60 address = IntItem(default=5, min=0, max=16,
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: 34
diff changeset
61 name=u'GPIB address',
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: 34
diff changeset
62 group="GPIB settings")
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
63
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: 34
diff changeset
64 background = ColorItem(default=QtGui.QColor("white"),
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: 34
diff changeset
65 name="Background",
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: 34
diff changeset
66 group="Colors")
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: 34
diff changeset
67 color0 = ColorItem(default=QtGui.QColor("black"),
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: 34
diff changeset
68 name="Pen #0",
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: 34
diff changeset
69 group="Colors")
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: 34
diff changeset
70 color1 = ColorItem(default=QtGui.QColor("green"),
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: 34
diff changeset
71 name="Pen #1",
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: 34
diff changeset
72 group="Colors")
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: 34
diff changeset
73 color2 = ColorItem(default=QtGui.QColor("red"),
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: 34
diff changeset
74 name="Pen #2",
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: 34
diff changeset
75 group="Colors")
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: 34
diff changeset
76 color3 = ColorItem(default=QtGui.QColor("blue"),
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: 34
diff changeset
77 name="Pen #3",
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: 34
diff changeset
78 group="Colors")
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: 34
diff changeset
79 color4 = ColorItem(default=QtGui.QColor("yellow"),
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: 34
diff changeset
80 name="Pen #4",
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: 34
diff changeset
81 group="Colors")
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: 34
diff changeset
82 color5 = ColorItem(default=QtGui.QColor("cyan"),
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: 34
diff changeset
83 name="Pen #5",
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: 34
diff changeset
84 group="Colors")
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: 34
diff changeset
85 color6 = ColorItem(default=QtGui.QColor("magenta"),
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: 34
diff changeset
86 name="Pen #6",
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: 34
diff changeset
87 group="Colors")
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: 34
diff changeset
88 color7 = ColorItem(default=QtGui.QColor("darkred"),
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: 34
diff changeset
89 name="Pen #7",
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: 34
diff changeset
90 group="Colors")
78
b73a9d9e45ec Add an option to qgpib_plotter to make it auto display any newly received plot (+ fix in plot list management)
David Douard <david.douard@logilab.fr>
parents: 76
diff changeset
91
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
92 autodisplay = BoolItem(
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
93 default=True,
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
94 name="Auto display",
98
4cbd3d410230 [plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
95 description=(
4cbd3d410230 [plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
96 "Automatically display a new plot as soon as it is received"),
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
97 group="Misc")
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
98
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
99
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
100 class QtHPGLPlotter(QtWidgets.QMainWindow, form_class):
22
b2f4646161be Begin of a HPGL plotter application (PyQt4)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
101 def __init__(self, parent=None):
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
102 super().__init__(parent)
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
103 self._plots = {}
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: 22
diff changeset
104 self._prefs = Preferences()
78
b73a9d9e45ec Add an option to qgpib_plotter to make it auto display any newly received plot (+ fix in plot list management)
David Douard <david.douard@logilab.fr>
parents: 76
diff changeset
105 self._receiving = False
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
106
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
107 self.setupUi(self)
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: 22
diff changeset
108 self.initializeGPIB()
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: 22
diff changeset
109 if self._prefs._pos:
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: 22
diff changeset
110 self.move(self._prefs._pos)
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: 22
diff changeset
111 if self._prefs._size:
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: 22
diff changeset
112 self.resize(self._prefs._size)
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: 22
diff changeset
113 if self._prefs._appState:
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: 22
diff changeset
114 self.restoreState(self._prefs._appState)
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: 34
diff changeset
115 self.readPreferences()
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: 22
diff changeset
116
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: 34
diff changeset
117 def readPreferences(self):
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: 34
diff changeset
118 bg = self._prefs.background
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: 34
diff changeset
119 if bg and bg.isValid():
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: 34
diff changeset
120 self.plotterWidget.qview.setBackgroundBrush(QtGui.QBrush(bg))
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
121 pen_colors = [self._prefs["color%d" % i] for i in range(8)]
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: 34
diff changeset
122 self.plotterWidget.pen_colors = pen_colors
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
123
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: 34
diff changeset
124 def replotCurrent(self):
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: 34
diff changeset
125 self.currentPlotChanged(self.plotsView.currentIndex())
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
126
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
127 def setupUi(self, widget):
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
128 super().setupUi(widget)
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: 22
diff changeset
129 # actions defined in designer
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
130 self.actionPreferences.triggered.connect(self.preferencesTriggered)
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
131 self.actionQuit.triggered.connect(self.quitTriggered)
25
32d0d1cd44c3 add main menu shotcuts and make first openened file displayed
David Douard <david.douard@logilab.fr>
parents: 23
diff changeset
132 self.actionQuit.setShortcut(QtGui.QKeySequence(u'Ctrl+Q'))
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
133 self.actionOpen.triggered.connect(self.openTriggered)
25
32d0d1cd44c3 add main menu shotcuts and make first openened file displayed
David Douard <david.douard@logilab.fr>
parents: 23
diff changeset
134 self.actionOpen.setShortcut(QtGui.QKeySequence(u'Ctrl+O'))
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
135 self.actionSave.triggered.connect(self.saveTriggered)
25
32d0d1cd44c3 add main menu shotcuts and make first openened file displayed
David Douard <david.douard@logilab.fr>
parents: 23
diff changeset
136 self.actionSave.setShortcut(QtGui.QKeySequence(u'Ctrl+S'))
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
137 self.actionSaveAs.triggered.connect(self.saveAsTriggered)
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: 22
diff changeset
138
76
baab64c18885 add ability to print a plot in qgpibplotter
David Douard <david.douard@logilab.fr>
parents: 75
diff changeset
139 self.actionPrint.setShortcut(QtGui.QKeySequence(u'Ctrl+P'))
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
140 self.actionPrint.triggered.connect(self.printTriggered)
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
141
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: 22
diff changeset
142 self.plotterWidget = QHPGLPlotterWidget(self)
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: 22
diff changeset
143 self.setCentralWidget(self.plotterWidget)
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: 22
diff changeset
144
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
145 self.captureButton.toggled.connect(self.captureToggled)
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: 22
diff changeset
146
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
147 self._plots_list = QtCore.QStringListModel()
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: 22
diff changeset
148 self.plotsView.setModel(self._plots_list)
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
149 self.plotsView.activated.connect(self.currentPlotChanged)
98
4cbd3d410230 [plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
150 self.plotsView.selectionModel().currentChanged.connect(
4cbd3d410230 [plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
151 self.currentPlotChanged)
78
b73a9d9e45ec Add an option to qgpib_plotter to make it auto display any newly received plot (+ fix in plot list management)
David Douard <david.douard@logilab.fr>
parents: 76
diff changeset
152 self.setReceivingLed()
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
153
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: 22
diff changeset
154 def currentPlotChanged(self, index, old_index=None):
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: 22
diff changeset
155 if index.isValid():
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
156 value = self.plotsView.model().data(index, Qt.DisplayRole)
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
157
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: 22
diff changeset
158 self.plotterWidget.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: 22
diff changeset
159 self.plotterWidget.parse(self._plots[value])
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
160
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: 22
diff changeset
161 def preferencesTriggered(self, checked=False):
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: 22
diff changeset
162 PreferencesEditor(self._prefs, self).exec_()
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: 34
diff changeset
163 self.readPreferences()
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: 34
diff changeset
164 self.replotCurrent()
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: 22
diff changeset
165
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: 22
diff changeset
166 def quitTriggered(self, checked=False):
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: 22
diff changeset
167 self.close()
22
b2f4646161be Begin of a HPGL plotter application (PyQt4)
David Douard <david.douard@logilab.fr>
parents:
diff changeset
168
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: 22
diff changeset
169 def closeEvent(self, event):
98
4cbd3d410230 [plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
170 # if self.promptForSave():
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: 22
diff changeset
171 if 1:
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: 22
diff changeset
172 self._prefs._pos = self.pos()
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: 22
diff changeset
173 self._prefs._size = self.size()
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: 22
diff changeset
174 self._prefs._appState = self.saveState()
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: 22
diff changeset
175 event.accept()
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: 22
diff changeset
176 else:
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: 22
diff changeset
177 event.ignore()
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
178
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: 22
diff changeset
179 def openTriggered(self, checked=False):
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
180 filenames = QtWidgets.QFileDialog.getOpenFileNames(
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
181 self, "Open a HPGL file to display", '.',
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
182 'HPGL files (*.plt)\nAll files (*)')
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
183 self.openFiles(filenames[0])
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
184 # self.displayFirst()
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
185
38
73bd2fe81005 small improvement; display first plot at startup
David Douard <david.douard@logilab.fr>
parents: 36
diff changeset
186 def displayFirst(self):
36
cb4124e3e75b some improvements; can now give a bunch of files to open on cmd line; removed print statements
David Douard <david.douard@logilab.fr>
parents: 35
diff changeset
187 if not self.plotsView.currentIndex().isValid():
cb4124e3e75b some improvements; can now give a bunch of files to open on cmd line; removed print statements
David Douard <david.douard@logilab.fr>
parents: 35
diff changeset
188 self.plotsView.setCurrentIndex(self.plotsView.model().index(0, 0))
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
189
36
cb4124e3e75b some improvements; can now give a bunch of files to open on cmd line; removed print statements
David Douard <david.douard@logilab.fr>
parents: 35
diff changeset
190 def openFiles(self, filenames):
38
73bd2fe81005 small improvement; display first plot at startup
David Douard <david.douard@logilab.fr>
parents: 36
diff changeset
191 ok = False
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: 22
diff changeset
192 for filename in filenames:
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: 22
diff changeset
193 if os.path.exists(filename):
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: 22
diff changeset
194 data = open(filename).read()
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: 22
diff changeset
195 name = os.path.basename(filename)
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: 22
diff changeset
196 name = os.path.splitext(name)[0]
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: 22
diff changeset
197 lst = self.plotsView.model().stringList()
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
198 lst.append(name)
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: 22
diff changeset
199 self._plots[name] = data
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: 22
diff changeset
200 self.plotsView.model().setStringList(lst)
38
73bd2fe81005 small improvement; display first plot at startup
David Douard <david.douard@logilab.fr>
parents: 36
diff changeset
201 ok = True
75
069666c7bf6c force display of opened file, instead of just adding ot to the plots list
David Douard <david.douard@logilab.fr>
parents: 66
diff changeset
202 if ok:
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
203 self.plotsView.setCurrentIndex(
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
204 self.plotsView.model().index(len(lst)-1, 0))
38
73bd2fe81005 small improvement; display first plot at startup
David Douard <david.douard@logilab.fr>
parents: 36
diff changeset
205 return ok
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
206
27
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
207 def plotReceived(self, num):
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
208 self._receiving = False
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
209 self.setReceivingLed()
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
210 plot, timestamp = self.captureThread.getPlot(num)
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
211 name = "plot_%s" % (num)
27
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
212 self._plots[name] = plot
78
b73a9d9e45ec Add an option to qgpib_plotter to make it auto display any newly received plot (+ fix in plot list management)
David Douard <david.douard@logilab.fr>
parents: 76
diff changeset
213 model = self.plotsView.model()
b73a9d9e45ec Add an option to qgpib_plotter to make it auto display any newly received plot (+ fix in plot list management)
David Douard <david.douard@logilab.fr>
parents: 76
diff changeset
214 pos = model.rowCount()
b73a9d9e45ec Add an option to qgpib_plotter to make it auto display any newly received plot (+ fix in plot list management)
David Douard <david.douard@logilab.fr>
parents: 76
diff changeset
215 model.insertRows(pos, 1)
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
216 model.setData(model.index(pos), name)
78
b73a9d9e45ec Add an option to qgpib_plotter to make it auto display any newly received plot (+ fix in plot list management)
David Douard <david.douard@logilab.fr>
parents: 76
diff changeset
217 if self._prefs.autodisplay:
b73a9d9e45ec Add an option to qgpib_plotter to make it auto display any newly received plot (+ fix in plot list management)
David Douard <david.douard@logilab.fr>
parents: 76
diff changeset
218 self.plotsView.setCurrentIndex(model.index(pos))
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
219
27
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
220 def plotStarted(self):
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
221 self._receiving = True
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
222 self.setReceivingLed()
76
baab64c18885 add ability to print a plot in qgpibplotter
David Douard <david.douard@logilab.fr>
parents: 75
diff changeset
223
baab64c18885 add ability to print a plot in qgpibplotter
David Douard <david.douard@logilab.fr>
parents: 75
diff changeset
224 def printTriggered(self, checked=False):
baab64c18885 add ability to print a plot in qgpibplotter
David Douard <david.douard@logilab.fr>
parents: 75
diff changeset
225 cindex = self.plotsView.currentIndex()
baab64c18885 add ability to print a plot in qgpibplotter
David Douard <david.douard@logilab.fr>
parents: 75
diff changeset
226 if cindex and cindex.isValid():
78
b73a9d9e45ec Add an option to qgpib_plotter to make it auto display any newly received plot (+ fix in plot list management)
David Douard <david.douard@logilab.fr>
parents: 76
diff changeset
227 # isn't there a simpler way of getting this?
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
228 plotname = self.plotsView.model().data(cindex, Qt.DisplayRole)
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
229 printer = QtPrintSupport.QPrinter()
76
baab64c18885 add ability to print a plot in qgpibplotter
David Douard <david.douard@logilab.fr>
parents: 75
diff changeset
230 printer.setOutputFormat(printer.PdfFormat)
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
231 printer.setOutputFileName('%s.pdf' % plotname)
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
232 prdialog = QtPrintSupport.QPrintDialog(printer)
76
baab64c18885 add ability to print a plot in qgpibplotter
David Douard <david.douard@logilab.fr>
parents: 75
diff changeset
233 prdialog.setEnabledOptions(prdialog.PrintToFile)
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
234 if prdialog.exec_() == prdialog.Accepted:
76
baab64c18885 add ability to print a plot in qgpibplotter
David Douard <david.douard@logilab.fr>
parents: 75
diff changeset
235 painter = QtGui.QPainter(printer)
baab64c18885 add ability to print a plot in qgpibplotter
David Douard <david.douard@logilab.fr>
parents: 75
diff changeset
236 painter.setRenderHint(painter.Antialiasing)
baab64c18885 add ability to print a plot in qgpibplotter
David Douard <david.douard@logilab.fr>
parents: 75
diff changeset
237 self.plotterWidget.qview.render(painter)
baab64c18885 add ability to print a plot in qgpibplotter
David Douard <david.douard@logilab.fr>
parents: 75
diff changeset
238 painter.end()
baab64c18885 add ability to print a plot in qgpibplotter
David Douard <david.douard@logilab.fr>
parents: 75
diff changeset
239 else:
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
240 QtWidgets.QMessageBox.warning(
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
241 self, "Nothing to print",
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
242 "Unable to print: <br><b>No plot is currently selected.</b>")
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
243
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: 22
diff changeset
244 def saveTriggered(self, checked=False):
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
245 print("save")
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
246
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: 22
diff changeset
247 def saveAsTriggered(self, checked=False):
34
022e881b758e moved some files & one bugfix
David Douard <david.douard@logilab.fr>
parents: 32
diff changeset
248 index = self.plotsView.selectionModel().currentIndex()
022e881b758e moved some files & one bugfix
David Douard <david.douard@logilab.fr>
parents: 32
diff changeset
249 if index.isValid():
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
250 filename = QtGui.QFileDialog.getSaveFileName(
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
251 self, "Selecte a file name to save HPGL file", '.',
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
252 'HPGL files (*.plt)\nAll files (*)')
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
253 value = self.plotsView.model().data(index, Qt.DisplayRole)
34
022e881b758e moved some files & one bugfix
David Douard <david.douard@logilab.fr>
parents: 32
diff changeset
254 open(filename, 'w').write(self._plots[value])
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
255
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: 22
diff changeset
256 def initializeGPIB(self):
27
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
257 self._online = False
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: 22
diff changeset
258 try:
98
4cbd3d410230 [plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
259 self.gpib_plotter = GPIBplotter(
4cbd3d410230 [plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
260 device=self._prefs.device,
4cbd3d410230 [plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
261 address=self._prefs.address,
4cbd3d410230 [plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
262 )
27
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
263 self.captureThread = GPIBReceiver(self.gpib_plotter)
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
264 self.captureThread.plotReceived.connect(self.plotReceived)
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
265 self.captureThread.plotStarted.connect(self.plotStarted)
27
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
266 self.captureThread.start()
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
267 except Exception as e:
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
268 self.captureThread = None
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: 22
diff changeset
269 self.gpib_plotter = None
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: 22
diff changeset
270 self.setCaptureLed()
27
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
271
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: 22
diff changeset
272 def captureToggled(self, state):
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: 22
diff changeset
273 if state:
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: 22
diff changeset
274 if self.gpib_plotter is None:
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: 22
diff changeset
275 self.initializeGPIB()
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: 22
diff changeset
276 if self.gpib_plotter is None:
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
277 QtWidgets.QMessageBox.critical(
98
4cbd3d410230 [plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
278 self, "GPIB error",
4cbd3d410230 [plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
279 "<b>Unable to initialize GPIB connection</b>."
4cbd3d410230 [plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
280 "<br>Please check your GPIB dongle and settings.")
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: 22
diff changeset
281 self._online = False
27
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
282 self.setCaptureLed()
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
283 return
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
284 self._online = True
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
285 self.captureThread.startCapture()
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: 22
diff changeset
286 else:
27
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
287 if self.captureThread:
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
288 self.captureThread.stopCapture()
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: 22
diff changeset
289 self._online = False
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: 22
diff changeset
290 self.setCaptureLed()
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
291
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: 22
diff changeset
292 def setCaptureLed(self):
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: 22
diff changeset
293 if self._online:
27
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
294 icn = QtGui.QIcon(':/icons/led_green.svg')
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: 22
diff changeset
295 else:
27
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
296 icn = QtGui.QIcon(':/icons/led_green_off.svg')
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: 22
diff changeset
297 self.captureButton.setIcon(icn)
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: 22
diff changeset
298 self.captureButton.setChecked(self._online)
27
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
299
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
300 def setReceivingLed(self):
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
301 if self._receiving:
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
302 icn = QtGui.QIcon(':/icons/led_red.svg')
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
303 else:
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
304 icn = QtGui.QIcon(':/icons/led_red_off.svg')
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
305 self.receivingButton.setIcon(icn)
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
306
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
307
27
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
308 class GPIBReceiver(QtCore.QThread):
98
4cbd3d410230 [plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
309 plotStarted = pyqtSignal()
4cbd3d410230 [plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
310 plotReceived = pyqtSignal(int)
4cbd3d410230 [plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
311
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
312 def __init__(self, cnx, parent=None):
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
313 super().__init__(parent)
27
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
314 self.gpibplotter = cnx
98
4cbd3d410230 [plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
315 self.gpibplotter.plot_started_cb = self.plotStarted.emit
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
316
27
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
317 self._cancel = False
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
318 # self._nreceived = 0
27
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
319 self._plotsmutex = QtCore.QMutex()
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
320 self._plots = []
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
321 self._capturing = False
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
322
27
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
323 def cancel(self):
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
324 self._cancel = True
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
325
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
326 def startCapture(self):
98
4cbd3d410230 [plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
327 self._capturing = True
27
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
328
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
329 def stopCapture(self):
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
330 self._capturing = False
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
331
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
332 def run(self):
98
4cbd3d410230 [plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
333 while not self._cancel:
27
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
334 if not self._capturing:
98
4cbd3d410230 [plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
335 self.msleep(100)
4cbd3d410230 [plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
336 continue
4cbd3d410230 [plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
337
27
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
338 plot = self.gpibplotter.load_plot(wait_timeout=0.1)
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
339 timestamp = time.time()
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
340 if plot:
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
341 self._plotsmutex.lock()
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
342 self._plots.append((plot, timestamp))
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
343 n = len(self._plots)
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
344 self._plotsmutex.unlock()
98
4cbd3d410230 [plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
345
4cbd3d410230 [plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
346 self.plotReceived.emit(n - 1)
27
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
347 self.msleep(10)
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
348
27
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
349 def getPlot(self, num):
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
350 self._plotsmutex.lock()
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
351 try:
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
352 return self._plots[num]
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
353 finally:
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
354 self._plotsmutex.unlock()
0f8f2621418f added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents: 26
diff changeset
355
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
356
28
0a7270d439d0 added a start scrip & cleanups
David Douard <david.douard@logilab.fr>
parents: 27
diff changeset
357 def main():
98
4cbd3d410230 [plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
358 global GPIBplotter
4cbd3d410230 [plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
359
28
0a7270d439d0 added a start scrip & cleanups
David Douard <david.douard@logilab.fr>
parents: 27
diff changeset
360 import optparse
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
361 opt = optparse.OptionParser(
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
362 'A simple PyQt4 HP7470A GPIB plotter emulator for USB-GPIB bundle '
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
363 '(Prologix)')
28
0a7270d439d0 added a start scrip & cleanups
David Douard <david.douard@logilab.fr>
parents: 27
diff changeset
364 opt.add_option('-m', '--mockup', default=False,
0a7270d439d0 added a start scrip & cleanups
David Douard <david.douard@logilab.fr>
parents: 27
diff changeset
365 action="store_true",
0a7270d439d0 added a start scrip & cleanups
David Douard <david.douard@logilab.fr>
parents: 27
diff changeset
366 dest='mockup',
0a7270d439d0 added a start scrip & cleanups
David Douard <david.douard@logilab.fr>
parents: 27
diff changeset
367 help='Use a pseudo GPIB connection (for test purpose)',
0a7270d439d0 added a start scrip & cleanups
David Douard <david.douard@logilab.fr>
parents: 27
diff changeset
368 )
0a7270d439d0 added a start scrip & cleanups
David Douard <david.douard@logilab.fr>
parents: 27
diff changeset
369 opt.add_option('-v', '--verbose', default=False,
0a7270d439d0 added a start scrip & cleanups
David Douard <david.douard@logilab.fr>
parents: 27
diff changeset
370 action="store_true",
0a7270d439d0 added a start scrip & cleanups
David Douard <david.douard@logilab.fr>
parents: 27
diff changeset
371 dest="verbose",
0a7270d439d0 added a start scrip & cleanups
David Douard <david.douard@logilab.fr>
parents: 27
diff changeset
372 help="Verbose mode",)
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
373
28
0a7270d439d0 added a start scrip & cleanups
David Douard <david.douard@logilab.fr>
parents: 27
diff changeset
374 options, argv = opt.parse_args(sys.argv)
98
4cbd3d410230 [plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
375 if options.mockup:
4cbd3d410230 [plotter] fix and improve a bit the HPGL plotter emulator
David Douard <david.douard@logilab.fr>
parents: 91
diff changeset
376 from pygpibtoolkit.plotter.gpib_plotter_mockup import GPIBplotter
28
0a7270d439d0 added a start scrip & cleanups
David Douard <david.douard@logilab.fr>
parents: 27
diff changeset
377
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
378 a = QtWidgets.QApplication(argv)
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: 22
diff changeset
379 w = QtHPGLPlotter()
36
cb4124e3e75b some improvements; can now give a bunch of files to open on cmd line; removed print statements
David Douard <david.douard@logilab.fr>
parents: 35
diff changeset
380 files = [f for f in argv[1:] if os.path.isfile(f)]
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
381 files.sort(key=str_num_key)
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
382 if w.openFiles(files):
38
73bd2fe81005 small improvement; display first plot at startup
David Douard <david.douard@logilab.fr>
parents: 36
diff changeset
383 w.displayFirst()
73bd2fe81005 small improvement; display first plot at startup
David Douard <david.douard@logilab.fr>
parents: 36
diff changeset
384
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: 22
diff changeset
385 w.show()
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: 22
diff changeset
386 a.exec_()
87
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
387
59a0946aa3d1 port HPGL plotter emulator to PyQt5
David Douard <david.douard@logilab.fr>
parents: 78
diff changeset
388
28
0a7270d439d0 added a start scrip & cleanups
David Douard <david.douard@logilab.fr>
parents: 27
diff changeset
389 if __name__ == '__main__':
0a7270d439d0 added a start scrip & cleanups
David Douard <david.douard@logilab.fr>
parents: 27
diff changeset
390 main()

mercurial