Fri, 25 Jan 2008 21:01:30 +0100
added some hpgl example plots
22
b2f4646161be
Begin of a HPGL plotter application (PyQt4)
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
1 | # |
b2f4646161be
Begin of a HPGL plotter application (PyQt4)
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
2 | |
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
|
3 | import os, 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
|
4 | import time |
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
|
5 | |
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
|
6 | from PyQt4 import QtGui, QtCore, uic |
22
b2f4646161be
Begin of a HPGL plotter application (PyQt4)
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
7 | from PyQt4.QtCore import SIGNAL, Qt |
b2f4646161be
Begin of a HPGL plotter application (PyQt4)
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
8 | |
28
0a7270d439d0
added a start scrip & cleanups
David Douard <david.douard@logilab.fr>
parents:
27
diff
changeset
|
9 | if "-m" in sys.argv: |
0a7270d439d0
added a start scrip & cleanups
David Douard <david.douard@logilab.fr>
parents:
27
diff
changeset
|
10 | from gpib_plotter_mockup import GPIBplotter |
0a7270d439d0
added a start scrip & cleanups
David Douard <david.douard@logilab.fr>
parents:
27
diff
changeset
|
11 | else: |
0a7270d439d0
added a start scrip & cleanups
David Douard <david.douard@logilab.fr>
parents:
27
diff
changeset
|
12 | from gpib_plotter import GPIBplotter |
22
b2f4646161be
Begin of a HPGL plotter application (PyQt4)
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
13 | from hpgl_qt import QHPGLPlotterWidget |
b2f4646161be
Begin of a HPGL plotter application (PyQt4)
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
14 | |
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
|
15 | form_class, base_class = uic.loadUiType(os.path.join(os.path.dirname(__file__), "qhpgl_plotter.ui")) |
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
|
16 | |
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
|
17 | from qpreferences import PreferenceItem, AbstractPreferences, PreferencesEditor |
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
|
18 | |
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
|
19 | class Preferences(AbstractPreferences): |
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
|
20 | ORGANISATION="Logilab" |
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
|
21 | APPLICATION="qgpib_plotter" |
22
b2f4646161be
Begin of a HPGL plotter application (PyQt4)
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
22 | |
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
|
23 | device = PreferenceItem('/dev/ttyUSB0', name=u'device', description=u'GPIB device') |
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
|
24 | address = PreferenceItem(5, name=u'GPIB address') |
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
|
25 | _pos = PreferenceItem(basetype=QtCore.QPoint) |
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
|
26 | _size = PreferenceItem(basetype=QtCore.QSize) |
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
|
27 | _appState = PreferenceItem(basetype=QtCore.QByteArray) |
27
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
28 | |
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
|
29 | |
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
|
30 | class QtHPGLPlotter(QtGui.QMainWindow, form_class): |
22
b2f4646161be
Begin of a HPGL plotter application (PyQt4)
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
31 | def __init__(self, parent=None): |
b2f4646161be
Begin of a HPGL plotter application (PyQt4)
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
32 | QtGui.QMainWindow.__init__(self, parent) |
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
|
33 | self._plots = {} |
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
|
34 | self._prefs = Preferences() |
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
|
35 | self.setupUi() |
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
|
36 | 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
|
37 | 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
|
38 | 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
|
39 | 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
|
40 | 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
|
41 | 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
|
42 | self.restoreState(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
|
43 | |
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
|
44 | def setupUi(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
|
45 | form_class.setupUi(self, self) # call qtdesigner generated form creation |
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
|
46 | # actions defined in designer |
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
|
47 | self.connect(self.actionPreferences, SIGNAL('triggered(bool)'), |
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 | self.preferencesTriggered) |
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
|
49 | self.connect(self.actionQuit, SIGNAL('triggered(bool)'), |
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
|
50 | self.quitTriggered) |
25
32d0d1cd44c3
add main menu shotcuts and make first openened file displayed
David Douard <david.douard@logilab.fr>
parents:
23
diff
changeset
|
51 | self.actionQuit.setShortcut(QtGui.QKeySequence(u'Ctrl+Q')) |
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
|
52 | self.connect(self.actionOpen, SIGNAL('triggered(bool)'), |
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
|
53 | self.openTriggered) |
25
32d0d1cd44c3
add main menu shotcuts and make first openened file displayed
David Douard <david.douard@logilab.fr>
parents:
23
diff
changeset
|
54 | self.actionOpen.setShortcut(QtGui.QKeySequence(u'Ctrl+O')) |
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
|
55 | self.connect(self.actionSave, SIGNAL('triggered(bool)'), |
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
|
56 | self.saveTriggered) |
25
32d0d1cd44c3
add main menu shotcuts and make first openened file displayed
David Douard <david.douard@logilab.fr>
parents:
23
diff
changeset
|
57 | self.actionSave.setShortcut(QtGui.QKeySequence(u'Ctrl+S')) |
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
|
58 | self.connect(self.actionSaveAs, SIGNAL('triggered(bool)'), |
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
|
59 | self.saveAsTriggered) |
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
|
60 | |
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
|
61 | 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
|
62 | 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
|
63 | |
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
|
64 | self.connect(self.captureButton, SIGNAL("toggled(bool)"), |
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
|
65 | self.captureToggled) |
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
|
66 | |
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
|
67 | self._plots_list = QtGui.QStringListModel() |
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
|
68 | self.plotsView.setModel(self._plots_list) |
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
|
69 | self.connect(self.plotsView, SIGNAL('activated(const QModelIndex&)'), |
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
|
70 | self.currentPlotChanged) |
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
|
71 | self.connect(self.plotsView.selectionModel(), |
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
|
72 | SIGNAL('currentChanged(const QModelIndex&, const QModelIndex&)'), |
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
|
73 | self.currentPlotChanged) |
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
|
74 | |
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
|
75 | 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
|
76 | if index.isValid(): |
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
|
77 | value = unicode(self.plotsView.model().data(index, Qt.DisplayRole).toString()) |
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
|
78 | |
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
|
79 | 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
|
80 | self.plotterWidget.parse(self._plots[value]) |
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
|
81 | |
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
|
82 | 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
|
83 | PreferencesEditor(self._prefs, self).exec_() |
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
|
84 | |
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
|
85 | 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
|
86 | self.close() |
22
b2f4646161be
Begin of a HPGL plotter application (PyQt4)
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
87 | |
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
|
88 | def closeEvent(self, event): |
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
|
89 | 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
|
90 | #if self.promptForSave(): |
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
|
91 | 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
|
92 | 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
|
93 | 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
|
94 | 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
|
95 | 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
|
96 | event.ignore() |
22
b2f4646161be
Begin of a HPGL plotter application (PyQt4)
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
97 | |
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
|
98 | def openTriggered(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
|
99 | filenames = QtGui.QFileDialog.getOpenFileNames(self, "Open a HPGL file to display", '.', 'HPGL files (*.plt)\nAll files (*)') |
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
|
100 | 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
|
101 | filename = str(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
|
102 | 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
|
103 | 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
|
104 | 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
|
105 | 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
|
106 | lst = self.plotsView.model().stringList() |
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
|
107 | lst.append(name) |
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._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
|
109 | self.plotsView.model().setStringList(lst) |
25
32d0d1cd44c3
add main menu shotcuts and make first openened file displayed
David Douard <david.douard@logilab.fr>
parents:
23
diff
changeset
|
110 | |
32d0d1cd44c3
add main menu shotcuts and make first openened file displayed
David Douard <david.douard@logilab.fr>
parents:
23
diff
changeset
|
111 | if not self.plotsView.currentIndex().isValid(): |
32d0d1cd44c3
add main menu shotcuts and make first openened file displayed
David Douard <david.douard@logilab.fr>
parents:
23
diff
changeset
|
112 | self.plotsView.setCurrentIndex(self.plotsView.model().index(0, 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
|
113 | |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
114 | 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
|
115 | 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
|
116 | 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
|
117 | plot, timestamp = self.captureThread.getPlot(num) |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
118 | name = "plot_%s"%(num) |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
119 | lst = self.plotsView.model().stringList() |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
120 | lst.append(name) |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
121 | self._plots[name] = plot |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
122 | self.plotsView.model().setStringList(lst) |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
123 | |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
124 | 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
|
125 | 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
|
126 | self.setReceivingLed() |
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
|
127 | |
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
|
128 | def saveTriggered(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
|
129 | print "save" |
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
|
130 | def saveAsTriggered(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
|
131 | print "saveAs" |
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
|
132 | |
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
|
133 | 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
|
134 | 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
|
135 | try: |
27
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
136 | self.gpib_plotter = QGPIBplotter(device=self._prefs.device, |
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
|
137 | address=self._prefs.address, |
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 | ) |
27
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
139 | self.captureThread = GPIBReceiver(self.gpib_plotter) |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
140 | self.connect(self.captureThread, SIGNAL('plotReceived(int)'), |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
141 | self.plotReceived) |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
142 | self.connect(self.captureThread, SIGNAL('plotStarted()'), |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
143 | self.plotStarted) |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
144 | self.captureThread.start() |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
145 | except Exception, e: |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
146 | #print e |
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
|
147 | 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
|
148 | 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
|
149 | |
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
|
150 | 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
|
151 | 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
|
152 | 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
|
153 | 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
|
154 | 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
|
155 | QtGui.QMessageBox.critical(self, self.tr("GPIB error"), |
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
|
156 | self.tr("<b>Unable to initialize GPIB connection</b>.<br>Please check your GPIB dongle and settings.")) |
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
|
157 | 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
|
158 | 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
|
159 | return |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
160 | 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
|
161 | 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
|
162 | 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
|
163 | 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
|
164 | 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
|
165 | 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
|
166 | 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
|
167 | |
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
|
168 | 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
|
169 | 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
|
170 | 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
|
171 | 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
|
172 | 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
|
173 | 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
|
174 | 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
|
175 | |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
176 | 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
|
177 | 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
|
178 | 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
|
179 | else: |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
180 | 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
|
181 | 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
|
182 | |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
183 | class QGPIBplotter(GPIBplotter): |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
184 | def __init__(self, device="/dev/ttyUSB0", baudrate=115200, 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
|
185 | address=5): |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
186 | GPIBplotter.__init__(self, device, baudrate, timeout, address) |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
187 | self.emitter = None |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
188 | |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
189 | 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
|
190 | if self.emitter: |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
191 | self.emitter.emit(SIGNAL('plotStarted()')) |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
192 | #self.emitter.msleep(1) |
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
|
193 | |
27
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
194 | class GPIBReceiver(QtCore.QThread): |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
195 | def __init__(self, cnx): |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
196 | QtCore.QThread.__init__(self) |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
197 | self.gpibplotter = cnx |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
198 | self.gpibplotter.emitter = self |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
199 | |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
200 | self._cancelmutex = 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
|
201 | self._cancel = False |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
202 | #self._nreceived = 0 |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
203 | 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
|
204 | 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
|
205 | self._startstopmutex = 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
|
206 | self._startstop = QtCore.QWaitCondition() |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
207 | 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
|
208 | |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
209 | 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
|
210 | self._cancelmutex.lock() |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
211 | 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
|
212 | self._cancelmutex.unlock() |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
213 | |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
214 | def startCapture(self): |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
215 | self._startstop.wakeOne() |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
216 | |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
217 | 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
|
218 | self._startstopmutex.lock() |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
219 | 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
|
220 | self._startstopmutex.unlock() |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
221 | |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
222 | def run(self): |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
223 | while 1: |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
224 | self._cancelmutex.lock() |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
225 | if self._cancel: |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
226 | return |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
227 | self._cancelmutex.unlock() |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
228 | self._startstopmutex.lock() |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
229 | if not self._capturing: |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
230 | self._startstop.wait(self._startstopmutex) |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
231 | self._capturing = True |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
232 | self._startstopmutex.unlock() |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
233 | |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
234 | 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
|
235 | 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
|
236 | 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
|
237 | 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
|
238 | 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
|
239 | 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
|
240 | 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
|
241 | self.emit(SIGNAL('plotReceived(int)'), n-1) |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
242 | self.msleep(10) |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
243 | |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
244 | 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
|
245 | 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
|
246 | try: |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
247 | 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
|
248 | finally: |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
249 | 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
|
250 | |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
251 | |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
252 | |
0f8f2621418f
added a gpib plot receiver mockup for testing purpose. Seems to work.
David Douard <david.douard@logilab.fr>
parents:
26
diff
changeset
|
253 | |
28
0a7270d439d0
added a start scrip & cleanups
David Douard <david.douard@logilab.fr>
parents:
27
diff
changeset
|
254 | def main(): |
0a7270d439d0
added a start scrip & cleanups
David Douard <david.douard@logilab.fr>
parents:
27
diff
changeset
|
255 | import optparse |
0a7270d439d0
added a start scrip & cleanups
David Douard <david.douard@logilab.fr>
parents:
27
diff
changeset
|
256 | opt = optparse.OptionParser('A simple PyQt4 HP7470A GPIB plotter emulator for USB-GPIB bundle (ProLogix)') |
0a7270d439d0
added a start scrip & cleanups
David Douard <david.douard@logilab.fr>
parents:
27
diff
changeset
|
257 | opt.add_option('-m', '--mockup', default=False, |
0a7270d439d0
added a start scrip & cleanups
David Douard <david.douard@logilab.fr>
parents:
27
diff
changeset
|
258 | action="store_true", |
0a7270d439d0
added a start scrip & cleanups
David Douard <david.douard@logilab.fr>
parents:
27
diff
changeset
|
259 | dest='mockup', |
0a7270d439d0
added a start scrip & cleanups
David Douard <david.douard@logilab.fr>
parents:
27
diff
changeset
|
260 | 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
|
261 | ) |
0a7270d439d0
added a start scrip & cleanups
David Douard <david.douard@logilab.fr>
parents:
27
diff
changeset
|
262 | opt.add_option('-v', '--verbose', default=False, |
0a7270d439d0
added a start scrip & cleanups
David Douard <david.douard@logilab.fr>
parents:
27
diff
changeset
|
263 | action="store_true", |
0a7270d439d0
added a start scrip & cleanups
David Douard <david.douard@logilab.fr>
parents:
27
diff
changeset
|
264 | dest="verbose", |
0a7270d439d0
added a start scrip & cleanups
David Douard <david.douard@logilab.fr>
parents:
27
diff
changeset
|
265 | help="Verbose mode",) |
0a7270d439d0
added a start scrip & cleanups
David Douard <david.douard@logilab.fr>
parents:
27
diff
changeset
|
266 | |
0a7270d439d0
added a start scrip & cleanups
David Douard <david.douard@logilab.fr>
parents:
27
diff
changeset
|
267 | options, argv = opt.parse_args(sys.argv) |
0a7270d439d0
added a start scrip & cleanups
David Douard <david.douard@logilab.fr>
parents:
27
diff
changeset
|
268 | |
0a7270d439d0
added a start scrip & cleanups
David Douard <david.douard@logilab.fr>
parents:
27
diff
changeset
|
269 | if options.verbose: |
0a7270d439d0
added a start scrip & cleanups
David Douard <david.douard@logilab.fr>
parents:
27
diff
changeset
|
270 | sys.stderr.write('connection established\n') |
0a7270d439d0
added a start scrip & cleanups
David Douard <david.douard@logilab.fr>
parents:
27
diff
changeset
|
271 | |
0a7270d439d0
added a start scrip & cleanups
David Douard <david.douard@logilab.fr>
parents:
27
diff
changeset
|
272 | a = QtGui.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
|
273 | w = QtHPGLPlotter() |
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 | 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
|
275 | a.exec_() |
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 | |
28
0a7270d439d0
added a start scrip & cleanups
David Douard <david.douard@logilab.fr>
parents:
27
diff
changeset
|
277 | if __name__ == '__main__': |
0a7270d439d0
added a start scrip & cleanups
David Douard <david.douard@logilab.fr>
parents:
27
diff
changeset
|
278 | main() |