pygpibtoolkit/HP3562A/q3562A.py

Tue, 12 Feb 2008 19:55:02 +0100

author
David Douard <david.douard@logilab.fr>
date
Tue, 12 Feb 2008 19:55:02 +0100
changeset 46
235686915f92
parent 43
a250bd7a2022
child 48
ceb2a3a4de6c
permissions
-rw-r--r--

add THD computation for simple traces of power spectrum

39
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
1 #
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
2
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
3 import os, sys
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
4 import time
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
5 import glob
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
6
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
7 from PyQt4 import QtGui, QtCore, uic
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
8 from PyQt4.QtCore import SIGNAL, Qt
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
9
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
10 if "-m" in sys.argv:
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
11 from dump_datablock_mockup import HP3562dumper
43
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
12 else:
39
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
13 from dump_datablock import HP3562dumper
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
14
42
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
15 from pygpibtoolkit.qt4.qpreferences import BaseItem, IntItem, UnicodeItem, ColorItem
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
16 from pygpibtoolkit.qt4.qpreferences import PointItem, SizeItem, ByteArrayItem
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
17 from pygpibtoolkit.qt4.qpreferences import AbstractPreferences
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
18 from pygpibtoolkit.qt4.qpreferenceseditor import PreferencesEditor
39
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
19
42
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
20 from pygpibtoolkit.tools import str_num_cmp
39
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
21
42
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
22 import pygpibtoolkit.qt4.resources_rc
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
23
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
24 from datablockwidget import getChild
39
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
25
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
26 class Preferences(AbstractPreferences):
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
27 ORGANISATION="Logilab"
42
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
28 APPLICATION="q3562"
39
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
29
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
30 _pos = PointItem()
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
31 _size = SizeItem()
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
32 _appState = ByteArrayItem()
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
33
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
34 device = UnicodeItem(default='/dev/ttyUSB0',
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
35 name=u'device',
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
36 description=u'GPIB device',
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
37 group="GPIB settings")
42
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
38 address = IntItem(default=0, min=0, max=16,
39
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
39 name=u'GPIB address',
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
40 group="GPIB settings")
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
41
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
42 background = ColorItem(default=QtGui.QColor("white"),
42
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
43 name="Plots background",
39
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
44 group="Colors")
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
45
42
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
46 class Qt3562(QtGui.QMainWindow):
39
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
47 def __init__(self, parent=None):
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
48 QtGui.QMainWindow.__init__(self, parent)
42
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
49 self.workspace = QtGui.QWorkspace()
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
50 self.setCentralWidget(self.workspace)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
51 self.connect(self.workspace, SIGNAL("windowActivated(QWidget *)"),
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
52 self.updateMenus)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
53 self.windowMapper = QtCore.QSignalMapper(self)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
54 self.connect(self.windowMapper, QtCore.SIGNAL("mapped(QWidget *)"),
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
55 self.workspace, QtCore.SLOT("setActiveWindow(QWidget *)"))
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
56
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
57 self.createActions()
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
58 self.createMenus()
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
59 self.createToolBars()
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
60 self.createStatusBar()
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
61 self.updateMenus()
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
62
39
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
63 self._prefs = Preferences()
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
64 self.initializeGPIB()
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
65 if self._prefs._pos:
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
66 self.move(self._prefs._pos)
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
67 if self._prefs._size:
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
68 self.resize(self._prefs._size)
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
69 if self._prefs._appState:
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
70 self.restoreState(self._prefs._appState)
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
71 self.readPreferences()
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
72
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
73 def readPreferences(self):
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
74 bg = self._prefs.background
43
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
75 #pen_colors = [self._prefs["color%d"%i] for i in range(8)]
42
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
76 #self.plotterWidget.pen_colors = pen_colors
43
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
77
42
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
78 def createActions(self):
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
79 self.openAct = QtGui.QAction(QtGui.QIcon(":/icons/open.png"),
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
80 self.tr("&Open..."), self)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
81 self.openAct.setShortcut(self.tr("Ctrl+O"))
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
82 self.openAct.setStatusTip(self.tr("Open an existing data block file"))
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
83 self.connect(self.openAct, QtCore.SIGNAL("triggered()"), self.open)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
84
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
85 self.saveAsAct = QtGui.QAction(self.tr("Save &As..."), self)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
86 self.saveAsAct.setStatusTip(self.tr("Save the document under a new name"))
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
87 self.connect(self.saveAsAct, QtCore.SIGNAL("triggered()"), self.saveAs)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
88
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
89 self.exitAct = QtGui.QAction(self.tr("E&xit"), self)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
90 self.exitAct.setShortcut(self.tr("Ctrl+Q"))
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
91 self.exitAct.setStatusTip(self.tr("Exit the application"))
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
92 self.connect(self.exitAct, QtCore.SIGNAL("triggered()"), self.close)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
93
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
94 self.closeAct = QtGui.QAction(self.tr("Cl&ose"), self)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
95 self.closeAct.setShortcut(self.tr("Ctrl+W"))
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
96 self.closeAct.setStatusTip(self.tr("Close the active window"))
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
97 self.connect(self.closeAct, QtCore.SIGNAL("triggered()"),
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
98 self.workspace.closeActiveWindow)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
99
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
100 self.closeAllAct = QtGui.QAction(self.tr("Close &All"), self)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
101 self.closeAllAct.setStatusTip(self.tr("Close all the windows"))
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
102 self.connect(self.closeAllAct, QtCore.SIGNAL("triggered()"),
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
103 self.workspace.closeAllWindows)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
104
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
105 self.tileAct = QtGui.QAction(self.tr("&Tile"), self)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
106 self.tileAct.setStatusTip(self.tr("Tile the windows"))
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
107 self.connect(self.tileAct, QtCore.SIGNAL("triggered()"),
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
108 self.workspace.tile)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
109
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
110 self.cascadeAct = QtGui.QAction(self.tr("&Cascade"), self)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
111 self.cascadeAct.setStatusTip(self.tr("Cascade the windows"))
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
112 self.connect(self.cascadeAct, QtCore.SIGNAL("triggered()"),
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
113 self.workspace.cascade)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
114
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
115 self.arrangeAct = QtGui.QAction(self.tr("Arrange &icons"), self)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
116 self.arrangeAct.setStatusTip(self.tr("Arrange the icons"))
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
117 self.connect(self.arrangeAct, QtCore.SIGNAL("triggered()"),
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
118 self.workspace.arrangeIcons)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
119
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
120 self.nextAct = QtGui.QAction(self.tr("Ne&xt"), self)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
121 self.nextAct.setShortcut(self.tr("Ctrl+F6"))
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
122 self.nextAct.setStatusTip(self.tr("Move the focus to the next window"))
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
123 self.connect(self.nextAct, QtCore.SIGNAL("triggered()"),
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
124 self.workspace.activateNextWindow)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
125
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
126 self.previousAct = QtGui.QAction(self.tr("Pre&vious"), self)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
127 self.previousAct.setShortcut(self.tr("Ctrl+Shift+F6"))
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
128 self.previousAct.setStatusTip(self.tr("Move the focus to the previous "
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
129 "window"))
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
130 self.connect(self.previousAct, QtCore.SIGNAL("triggered()"),
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
131 self.workspace.activatePreviousWindow)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
132
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
133 self.separatorAct = QtGui.QAction(self)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
134 self.separatorAct.setSeparator(True)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
135
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
136 self.aboutAct = QtGui.QAction(self.tr("&About"), self)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
137 self.aboutAct.setStatusTip(self.tr("Show the application's About box"))
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
138 self.connect(self.aboutAct, QtCore.SIGNAL("triggered()"), self.about)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
139
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
140 self.aboutQtAct = QtGui.QAction(self.tr("About &Qt"), self)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
141 self.aboutQtAct.setStatusTip(self.tr("Show the Qt library's About box"))
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
142 self.connect(self.aboutQtAct, QtCore.SIGNAL("triggered()"),
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
143 QtGui.qApp, QtCore.SLOT("aboutQt()"))
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
144
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
145
43
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
146 self.getStateAct = QtGui.QAction(self.tr("Get state"), self)
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
147 self.getStateAct.setStatusTip(self.tr("Retrieve State from GPIB device"))
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
148 self.connect(self.getStateAct, QtCore.SIGNAL("triggered()"),
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
149 self.getState)
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
150 self.getTraceAct = QtGui.QAction(self.tr("Get trace"), self)
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
151 self.getTraceAct.setStatusTip(self.tr("Retrieve Trace from GPIB device"))
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
152 self.connect(self.getTraceAct, QtCore.SIGNAL("triggered()"),
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
153 self.getTrace)
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
154 self.getCoordAct = QtGui.QAction(self.tr("Get coord"), self)
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
155 self.getCoordAct.setStatusTip(self.tr("Retrieve Coord from GPIB device"))
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
156 self.connect(self.getCoordAct, QtCore.SIGNAL("triggered()"),
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
157 self.getCoord)
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
158
39
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
159 def setupUi(self):
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
160 self.connect(self.actionPreferences, SIGNAL('triggered(bool)'),
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
161 self.preferencesTriggered)
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
162 self.connect(self.actionQuit, SIGNAL('triggered(bool)'),
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
163 self.quitTriggered)
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
164 self.actionQuit.setShortcut(QtGui.QKeySequence(u'Ctrl+Q'))
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
165 self.connect(self.actionOpen, SIGNAL('triggered(bool)'),
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
166 self.openTriggered)
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
167 self.actionOpen.setShortcut(QtGui.QKeySequence(u'Ctrl+O'))
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
168 self.connect(self.actionSave, SIGNAL('triggered(bool)'),
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
169 self.saveTriggered)
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
170 self.actionSave.setShortcut(QtGui.QKeySequence(u'Ctrl+S'))
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
171 self.connect(self.actionSaveAs, SIGNAL('triggered(bool)'),
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
172 self.saveAsTriggered)
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
173
42
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
174
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
175 def about(self):
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
176 QtGui.QMessageBox.about(self, self.tr("About Q3562"),
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
177 self.tr("A simple application to talk to the HP3562A DSA."))
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
178
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
179 def updateMenus(self):
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
180 hasMdiChild = (self.activeMdiChild() is not None)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
181 self.saveAsAct.setEnabled(hasMdiChild)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
182 self.closeAct.setEnabled(hasMdiChild)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
183 self.closeAllAct.setEnabled(hasMdiChild)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
184 self.tileAct.setEnabled(hasMdiChild)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
185 self.cascadeAct.setEnabled(hasMdiChild)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
186 self.arrangeAct.setEnabled(hasMdiChild)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
187 self.nextAct.setEnabled(hasMdiChild)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
188 self.previousAct.setEnabled(hasMdiChild)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
189 self.separatorAct.setVisible(hasMdiChild)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
190
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
191 def updateWindowMenu(self):
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
192 self.windowMenu.clear()
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
193 self.windowMenu.addAction(self.closeAct)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
194 self.windowMenu.addAction(self.closeAllAct)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
195 self.windowMenu.addSeparator()
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
196 self.windowMenu.addAction(self.tileAct)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
197 self.windowMenu.addAction(self.cascadeAct)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
198 self.windowMenu.addAction(self.arrangeAct)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
199 self.windowMenu.addSeparator()
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
200 self.windowMenu.addAction(self.nextAct)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
201 self.windowMenu.addAction(self.previousAct)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
202 self.windowMenu.addAction(self.separatorAct)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
203
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
204 windows = self.workspace.windowList()
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
205 self.separatorAct.setVisible(len(windows) != 0)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
206
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
207 i = 0
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
208 for child in windows:
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
209 if i < 9:
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
210 text = self.tr("&%1 %2").arg(i + 1).arg(child.userFriendlyName())
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
211 else:
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
212 text = self.tr("%1 %2").arg(i + 1).arg(child.userFriendlyName())
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
213 i += 1
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
214 action = self.windowMenu.addAction(text)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
215 action.setCheckable(True)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
216 action.setChecked(child == self.activeMdiChild())
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
217 self.connect(action, QtCore.SIGNAL("triggered()"),
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
218 self.windowMapper, QtCore.SLOT("map()"))
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
219 self.windowMapper.setMapping(action, child)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
220
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
221 def createMenus(self):
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
222 self.fileMenu = self.menuBar().addMenu(self.tr("&File"))
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
223 self.fileMenu.addAction(self.openAct)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
224 self.fileMenu.addAction(self.saveAsAct)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
225 self.fileMenu.addSeparator()
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
226 self.fileMenu.addAction(self.exitAct)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
227
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
228 self.windowMenu = self.menuBar().addMenu(self.tr("&Window"))
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
229 self.connect(self.windowMenu, QtCore.SIGNAL("aboutToShow()"),
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
230 self.updateWindowMenu)
39
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
231
43
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
232
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
233
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
234 self.deviceMenu = self.menuBar().addMenu(self.tr("&Device"))
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
235 self.deviceMenu.addAction(self.getStateAct)
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
236 self.deviceMenu.addAction(self.getTraceAct)
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
237 self.deviceMenu.addAction(self.getCoordAct)
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
238
42
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
239 self.menuBar().addSeparator()
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
240 self.helpMenu = self.menuBar().addMenu(self.tr("&Help"))
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
241 self.helpMenu.addAction(self.aboutAct)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
242 self.helpMenu.addAction(self.aboutQtAct)
43
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
243
42
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
244 def createToolBars(self):
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
245 self.fileToolBar = self.addToolBar(self.tr("File"))
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
246 self.fileToolBar.addAction(self.openAct)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
247 self.fileToolBar.addAction(self.saveAsAct)
43
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
248 self.fileToolBar.addSeparator()
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
249 self.fileToolBar.addAction(self.getStateAct)
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
250 self.fileToolBar.addAction(self.getTraceAct)
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
251 self.fileToolBar.addAction(self.getCoordAct)
42
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
252
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
253 def createStatusBar(self):
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
254 self.statusBar().showMessage(self.tr("Ready"))
43
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
255
39
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
256 def preferencesTriggered(self, checked=False):
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
257 PreferencesEditor(self._prefs, self).exec_()
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
258 self.readPreferences()
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
259 self.replotCurrent()
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
260
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
261 def closeEvent(self, event):
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
262 if 1:
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
263 #if self.promptForSave():
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
264 self._prefs._pos = self.pos()
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
265 self._prefs._size = self.size()
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
266 self._prefs._appState = self.saveState()
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
267 event.accept()
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
268 else:
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
269 event.ignore()
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
270
42
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
271 def open(self, checked=False):
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
272 filenames = QtGui.QFileDialog.getOpenFileNames(self, "Open a dumped data block file", '.', 'bin files (*.bin)\nAll files (*)')
39
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
273 self.openFiles(filenames)
43
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
274
39
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
275 def openFiles(self, filenames):
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
276 ok = False
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
277 for filename in filenames:
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
278 filename = str(filename)
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
279 if os.path.exists(filename):
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
280 data = open(filename).read()
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
281 name = os.path.basename(filename)
43
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
282 #name = os.path.splitext(name)[0]
42
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
283 child_cls = getChild(data)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
284 assert child_cls
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
285 child = child_cls(data, name=name)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
286 self.workspace.addWindow(child)
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
287 child.show()
39
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
288 ok = True
42
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
289 self.statusBar().showMessage(self.tr("File(s) loaded"), 2000)
39
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
290 return ok
42
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
291
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
292 def saveAs(self, checked=False):
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
293 return
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
294 # index = self.plotsView.selectionModel().currentIndex()
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
295 # if index.isValid():
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
296 # filename = QtGui.QFileDialog.getSaveFileName(self, "Selecte a file name to save HPGL file", '.', 'HPGL files (*.plt)\nAll files (*)')
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
297 # n = index.row()
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
298 # value = unicode(self.plotsView.model().data(index, Qt.DisplayRole).toString())
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
299 # open(filename, 'w').write(self._plots[value])
39
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
300
42
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
301 def activeMdiChild(self):
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
302 return self.workspace.activeWindow()
39
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
303
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
304 def initializeGPIB(self):
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
305 try:
43
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
306 self.gpib_dumper = HP3562dumper(device=self._prefs.device,
39
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
307 address=self._prefs.address,
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
308 )
43
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
309 self.captureThread = GPIBReceiver(self.gpib_dumper)
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
310 self.connect(self.captureThread, SIGNAL('datablockDumped(const QByteArray)'),
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
311 self.datablockReceived)
39
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
312 self.captureThread.start()
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
313 except Exception, e:
43
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
314 print e
39
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
315 self.gpib_plotter = None
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
316
43
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
317 def datablockReceived(self, datablock):
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
318 datablock = datablock.data()
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
319 child_cls = getChild(datablock)
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
320 assert child_cls
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
321 child = child_cls(datablock)
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
322 self.workspace.addWindow(child)
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
323 child.show()
39
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
324
43
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
325 def getState(self):
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
326 self.captureThread.startCapture(mode="state")
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
327
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
328 def getTrace(self):
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
329 self.captureThread.startCapture(mode="trace")
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
330
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
331 def getCoord(self):
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
332 self.captureThread.startCapture(mode="coord")
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
333
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
334 class GPIBReceiver(QtCore.QThread):
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
335 def __init__(self, cnx):
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
336 QtCore.QThread.__init__(self)
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
337 self.gpibdumper = cnx
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
338
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
339 self._cancelmutex = QtCore.QMutex()
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
340 self._cancel = False
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
341 self._modemutex = QtCore.QMutex()
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
342 self._mode = None
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
343 #self._nreceived = 0
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
344 self._startstopmutex = QtCore.QMutex()
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
345 self._startstop = QtCore.QWaitCondition()
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
346 self._capturing = False
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
347
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
348 def cancel(self):
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
349 self._cancelmutex.lock()
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
350 self._cancel = True
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
351 self._cancelmutex.unlock()
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
352
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
353 def startCapture(self, mode):
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
354 self._modemutex.lock()
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
355 self._mode = mode
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
356 self._modemutex.unlock()
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
357 self._startstop.wakeOne()
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
358
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
359 def stopCapture(self):
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
360 self._startstopmutex.lock()
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
361 self._capturing = False
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
362 self._startstopmutex.unlock()
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
363
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
364 def run(self):
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
365 while 1:
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
366 self._cancelmutex.lock()
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
367 if self._cancel:
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
368 return
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
369 self._cancelmutex.unlock()
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
370 self._startstopmutex.lock()
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
371 if not self._capturing:
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
372 self._startstop.wait(self._startstopmutex)
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
373 self._capturing = True
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
374 self._startstopmutex.unlock()
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
375 self._modemutex.lock()
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
376 mode = self._mode
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
377 self._modemutex.unlock()
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
378 datablock = self.gpibdumper.dump(mode=mode)
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
379 self._capturing = False
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
380 timestamp = time.time()
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
381 if datablock:
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
382 self.emit(SIGNAL('datablockDumped(const QByteArray)'),
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
383 QtCore.QByteArray(datablock))
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
384 self.msleep(10)
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
385
39
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
386 def main():
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
387 import optparse
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
388 opt = optparse.OptionParser('A simple PyQt4 HP7470A GPIB plotter emulator for USB-GPIB bundle (ProLogix)')
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
389 opt.add_option('-m', '--mockup', default=False,
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
390 action="store_true",
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
391 dest='mockup',
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
392 help='Use a pseudo GPIB connection (for test purpose)',
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
393 )
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
394 opt.add_option('-v', '--verbose', default=False,
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
395 action="store_true",
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
396 dest="verbose",
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
397 help="Verbose mode",)
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
398
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
399 options, argv = opt.parse_args(sys.argv)
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
400
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
401 a = QtGui.QApplication(argv)
42
a947d80b1afd make q3562 app beginning to work; can now display state & trace datablock with some options.
David Douard <david.douard@logilab.fr>
parents: 40
diff changeset
402 w = Qt3562()
39
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
403 files = [f for f in argv[1:] if os.path.isfile(f)]
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
404 files.sort(cmp=str_num_cmp)
43
a250bd7a2022 more work on HP3562A data block dumper/displayer application.
David Douard <david.douard@logilab.fr>
parents: 42
diff changeset
405 w.openFiles(files)
39
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
406
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
407 w.show()
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
408 a.exec_()
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
409
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
410 if __name__ == '__main__':
8becd52c2171 refactoring in progress
David Douard <david.douard@logilab.fr>
parents:
diff changeset
411 main()

mercurial