qgpib_plotter.py

Fri, 25 Jan 2008 20:49:28 +0100

author
David Douard <david.douard@logilab.fr>
date
Fri, 25 Jan 2008 20:49:28 +0100
changeset 29
558a7d3fb123
parent 28
0a7270d439d0
permissions
-rw-r--r--

oops, forgot icon files

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()

mercurial