Mon, 11 Feb 2008 23:36:58 +0100
added some forgoten files to Hg
44
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
1 | # |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
2 | import re |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
3 | import numpy |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
4 | from itertools import izip, count as icount |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
5 | |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
6 | from PyQt4 import QtCore, QtGui |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
7 | from PyQt4.QtCore import Qt, SIGNAL |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
8 | import state_decoder |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
9 | import trace_decoder |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
10 | import coord_decoder |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
11 | from pygpibtoolkit.qt4.mpl import QMplCanvas |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
12 | |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
13 | children = [ ] |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
14 | |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
15 | def getChild(datablock): |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
16 | """ |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
17 | Try to find the appropriate MDI child widget for the given datablock. |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
18 | """ |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
19 | for child in children: |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
20 | if child.isValidDatablock(datablock): |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
21 | print "using" , child |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
22 | return child |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
23 | return None |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
24 | |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
25 | class DatablockMDIChild(QtGui.QMainWindow): |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
26 | seqnumber = 1 |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
27 | _username = "Window" |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
28 | |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
29 | @classmethod |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
30 | def isValidDatablock(cls, datablock): |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
31 | return False |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
32 | |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
33 | def __init__(self, datablock, name=None): |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
34 | QtGui.QMainWindow.__init__(self) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
35 | if name is not None: |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
36 | self.username = name |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
37 | else: |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
38 | self.username = self.__class__._username + " " + str(self.seqnumber) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
39 | self.setAttribute(Qt.WA_DeleteOnClose) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
40 | self.isUntitled = True |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
41 | self.dataIsModified = False |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
42 | self.setDatablock(datablock) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
43 | self.setWindowTitle(self.username) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
44 | self.setupUI() |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
45 | self.updateHeaderData() |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
46 | |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
47 | def setDatablock(self, datablock): |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
48 | self.datablock = datablock |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
49 | |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
50 | def setupUI(self): |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
51 | # setup headers views as a docked window |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
52 | assert isinstance(self._header_struct, tuple) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
53 | self.headerDocks = [] |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
54 | self.tables = [] |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
55 | for i, header_struct in enumerate(self._header_struct): |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
56 | dock = QtGui.QDockWidget("Header" + (i>0 and (' %s'%(i+1)) or ''), |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
57 | self) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
58 | #dock.setFeatures(dock.NoDockWidgetFeatures) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
59 | sarea = QtGui.QScrollArea(dock) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
60 | dock.setWidget(sarea) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
61 | self.addDockWidget(QtCore.Qt.RightDockWidgetArea, dock) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
62 | self.headerDocks.append(dock) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
63 | |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
64 | l = QtGui.QVBoxLayout(sarea) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
65 | l.setContentsMargins(0,0,0,0) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
66 | table = QtGui.QTableWidget(sarea) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
67 | table.setAlternatingRowColors(True) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
68 | table.verticalHeader().hide() |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
69 | l.addWidget(table, 1) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
70 | self.tables.append(table) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
71 | |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
72 | def setupRowsHeight(self, table): |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
73 | if table.verticalHeader().minimumSectionSize()>0: |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
74 | cellsize = table.verticalHeader().minimumSectionSize() |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
75 | else: |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
76 | cellsize = 17 |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
77 | table.verticalHeader().setDefaultSectionSize(cellsize) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
78 | |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
79 | def updateHeaderData(self): |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
80 | for header, table, header_struct in izip(self.header, self.tables, self._header_struct): |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
81 | table.clear() |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
82 | table.setRowCount(len(header_struct)) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
83 | table.setColumnCount(2) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
84 | table.setHorizontalHeaderLabels(['Parameter', 'Value']) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
85 | bool_re = re.compile(r'((?P<before>.*) )?(?P<flag>\w+/\w+)( (?P<after>.*))?') |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
86 | item = QtGui.QTableWidgetItem() |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
87 | item.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
88 | for i, row in enumerate(header_struct): |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
89 | key = row[0] |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
90 | typ = row[1] |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
91 | if typ is None: |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
92 | continue |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
93 | val = header.get(key, "N/A") |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
94 | if isinstance(val, basestring): |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
95 | val = unicode(val) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
96 | elif typ is bool and isinstance(val, typ): |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
97 | m = bool_re.match(key) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
98 | if m: |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
99 | d = m.groupdict() |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
100 | key = "" |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
101 | if d['before']: |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
102 | key += d['before'] |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
103 | if d['after']: |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
104 | key += d['after'] |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
105 | key = key.capitalize() |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
106 | val = d['flag'].split('/')[not val] |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
107 | else: |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
108 | val = str(val) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
109 | else: |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
110 | val = str(val) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
111 | val = val.strip() |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
112 | if val: |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
113 | if val[0]+val[-1] in ['""',"''"]: |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
114 | val = val[1:-1] |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
115 | if val[0:2]+val[-1] in ['u""',"u''"]: |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
116 | val = val[2:-1] |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
117 | while val and val.endswith(chr(0)): |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
118 | val = val[:-1] |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
119 | item_ = QtGui.QTableWidgetItem(item) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
120 | item_.setText(key) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
121 | table.setItem(i, 0, item_) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
122 | item_ = QtGui.QTableWidgetItem(item) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
123 | item_.setText(val) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
124 | table.setItem(i, 1, item_) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
125 | table.resizeColumnsToContents() |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
126 | table.resizeRowsToContents() |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
127 | # self.setupRowsHeight(self.table) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
128 | |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
129 | def userFriendlyName(self): |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
130 | return self.username |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
131 | |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
132 | def closeEvent(self, event): |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
133 | if self.maybeSave(): |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
134 | event.accept() |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
135 | else: |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
136 | event.ignore() |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
137 | |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
138 | def maybeSave(self): |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
139 | if self.dataIsModified: |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
140 | ret = QtGui.QMessageBox.warning(self, self.tr("MDI"), |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
141 | self.tr("'%1' has been modified.\n"\ |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
142 | "Do you want to save your changes?") |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
143 | .arg(self.userFriendlyCurrentFile()), |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
144 | QtGui.QMessageBox.Yes | QtGui.QMessageBox.Default, |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
145 | QtGui.QMessageBox.No, |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
146 | QtGui.QMessageBox.Cancel | QtGui.QMessageBox.Escape) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
147 | if ret == QtGui.QMessageBox.Yes: |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
148 | return self.save() |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
149 | elif ret == QtGui.QMessageBox.Cancel: |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
150 | return False |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
151 | return True |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
152 | |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
153 | class StateBinaryDatablockMDIChild(DatablockMDIChild): |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
154 | _username = "State" |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
155 | _header_struct = state_decoder.HEADER, |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
156 | @classmethod |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
157 | def isValidDatablock(cls, datablock): |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
158 | try: |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
159 | h = state_decoder.decode_state(datablock) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
160 | assert len(h)>0 |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
161 | return True |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
162 | except Exception, e: |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
163 | return False |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
164 | |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
165 | def setDatablock(self, datablock): |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
166 | DatablockMDIChild.setDatablock(self, datablock) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
167 | self.header = [state_decoder.decode_state(self.datablock)] |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
168 | |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
169 | class TraceBinaryDatablockMDIChild(DatablockMDIChild): |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
170 | _username = "Trace" |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
171 | _header_struct = trace_decoder.HEADER, |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
172 | @classmethod |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
173 | def isValidDatablock(cls, datablock): |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
174 | try: |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
175 | h, t = trace_decoder.decode_trace(datablock) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
176 | assert len(h)>0 |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
177 | assert len(t) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
178 | return True |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
179 | except Exception, e: |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
180 | return False |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
181 | |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
182 | def __init__(self, datablock, name=None): |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
183 | DatablockMDIChild.__init__(self, datablock, name) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
184 | self.updateTraceData() |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
185 | |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
186 | def setDatablock(self, datablock): |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
187 | DatablockMDIChild.setDatablock(self, datablock) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
188 | self.header, self.trace = trace_decoder.decode_trace(self.datablock) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
189 | self.header = [self.header] |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
190 | |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
191 | def setupToolBar(self): |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
192 | toolbar = QtGui.QToolBar(self) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
193 | self.addToolBar(toolbar) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
194 | self.ylogaction = QtGui.QAction(self.tr("Y Log"), self) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
195 | self.ylogaction.setCheckable(True) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
196 | self.connect(self.ylogaction, SIGNAL('toggled(bool)'), |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
197 | self.updateTraceData) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
198 | toolbar.addAction(self.ylogaction) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
199 | |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
200 | |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
201 | def setupUI(self): |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
202 | self.setupToolBar() |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
203 | DatablockMDIChild.setupUI(self) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
204 | mainw = QtGui.QWidget(self) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
205 | l = QtGui.QVBoxLayout(mainw) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
206 | l.setMargin(0) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
207 | self.canvas = QMplCanvas(self) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
208 | l.addWidget(self.canvas, 1) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
209 | self.setCentralWidget(mainw) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
210 | |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
211 | def updateTraceData(self): |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
212 | #self.canvas.deleteLater() |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
213 | #self.canvas = QMplCanvas() |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
214 | #self.centralWidget().layout().addWidget(self.canvas, 1) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
215 | f0 = self.header[0]['Start freq value'] |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
216 | dx = self.header[0]['Delta X-axis'] |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
217 | n = self.header[0]['Number of elements'] |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
218 | x = numpy.linspace(f0, f0+dx*n, len(self.trace)) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
219 | y = self.trace.copy() |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
220 | if self.ylogaction.isChecked(): |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
221 | minv = min(y[y>0]) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
222 | y[y==0] = minv |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
223 | y = numpy.log10(y) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
224 | y = y*10 |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
225 | self.canvas.axes.clear() |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
226 | self.canvas.axes.plot(x, y, 'r') |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
227 | self.canvas.axes.set_xlim(min(x), max(x)) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
228 | self.canvas.axes.set_xlabel("%s (%s)"%(self.header[0]['Domain'], |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
229 | self.header[0]['X axis units'])) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
230 | if self.ylogaction.isChecked(): |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
231 | self.canvas.axes.set_ylabel('db (%s)'%self.header[0]['Amplitude units']) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
232 | else: |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
233 | self.canvas.axes.set_ylabel('%s'%self.header[0]['Amplitude units']) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
234 | self.canvas.axes.grid(True) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
235 | if self.header[0]['Display function']: |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
236 | self.canvas.axes.set_title(self.header[0]['Display function']) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
237 | |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
238 | self.canvas.repaint() |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
239 | |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
240 | class CoordBinaryDatablockMDIChild(TraceBinaryDatablockMDIChild): |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
241 | _username = "Coord" |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
242 | _header_struct = coord_decoder.TRACE_HEADER, coord_decoder.HEADER, |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
243 | @classmethod |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
244 | def isValidDatablock(cls, datablock): |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
245 | try: |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
246 | h1, h2, t = coord_decoder.decode_coord(datablock) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
247 | assert len(h1)>0 |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
248 | assert len(h2)>0 |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
249 | assert len(t)>0 |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
250 | return True |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
251 | except Exception, e: |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
252 | return False |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
253 | def setupToolBar(self): |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
254 | pass |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
255 | |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
256 | def setDatablock(self, datablock): |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
257 | DatablockMDIChild.setDatablock(self, datablock) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
258 | h1, h2, self.trace = coord_decoder.decode_coord(self.datablock) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
259 | self.header = [h2, h1] |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
260 | |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
261 | def updateTraceData(self): |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
262 | f0 = self.header[0]['Start freq value'] |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
263 | dx = self.header[0]['Delta X-axis'] |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
264 | n = self.header[0]['Number of elements'] |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
265 | x = numpy.linspace(f0, f0+dx*n, len(self.trace)) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
266 | y = self.trace.copy() |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
267 | |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
268 | y = y.clip(min=self.header[1]['Min value of data'], |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
269 | max=self.header[1]['Max value of data'],) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
270 | |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
271 | self.canvas.axes.clear() |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
272 | self.canvas.axes.plot(x, y, 'r') |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
273 | self.canvas.axes.set_xlim(min(x), max(x)) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
274 | self.canvas.axes.set_xlabel("%s (%s)"%(self.header[0]['Domain'], |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
275 | self.header[0]['X axis units'])) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
276 | self.canvas.axes.set_ylabel('%s (%s)'%(self.header[1]['Y coordinates'], |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
277 | self.header[0]['Amplitude units'])) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
278 | self.canvas.axes.grid(True) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
279 | if self.header[0]['Display function']: |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
280 | self.canvas.axes.set_title(self.header[0]['Display function']) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
281 | |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
282 | self.canvas.repaint() |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
283 | |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
284 | |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
285 | children.append(CoordBinaryDatablockMDIChild) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
286 | children.append(TraceBinaryDatablockMDIChild) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
287 | children.append(StateBinaryDatablockMDIChild) |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
288 | |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
289 | |
c4bdd390918c
added some forgoten files to Hg
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
290 |