forked from clysto/sigviewer
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsigviewer.py
executable file
·67 lines (54 loc) · 1.99 KB
/
sigviewer.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#!/usr/bin/env python3
import sys
import numpy as np
from PySide6 import QtWidgets
from config import config
from signaldata import SignalData
from ui.mainwindow import Ui_MainWindow
from ui.preferencewindow import Ui_Dialog
class PreferenceWindow(QtWidgets.QDialog, Ui_Dialog):
def __init__(self, parent):
QtWidgets.QDialog.__init__(self, parent)
self.setupUi(self)
class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self):
QtWidgets.QMainWindow.__init__(self)
self.setupUi(self)
self.preferenceWindow = PreferenceWindow(self)
self.sampleRateLineEdit.setText(str(config["defaultSampleRate"]))
def changeFile(self):
dlg = QtWidgets.QFileDialog(self)
dlg.setFileMode(QtWidgets.QFileDialog.FileMode.AnyFile)
if dlg.exec():
filenames = dlg.selectedFiles()
fp = filenames[0]
self.filePath.setText(fp)
data = np.memmap(
fp,
dtype=np.complex64,
mode="r",
)
self.signalView.setSigData(SignalData(data))
def handleMenuAction(self, action):
if action == self.actionPreferences:
self.preferenceWindow.show()
elif action == self.actionOpen:
self.changeFile()
def changeOption(self):
sampleRate = eval(self.sampleRateLineEdit.text())
sampleRate = int(sampleRate)
self.signalView.setSampleRate(sampleRate)
self.statusbar.showMessage("Options changed.", 3000)
def exportToFile(self):
if self.signalView.data is None:
return
filename = QtWidgets.QFileDialog.getSaveFileName(self)
if filename:
viewStart, viewEnd = self.signalView.plotItem.getXDataRange()
data = self.signalView.data[viewStart:viewEnd]
data.tofile(filename[0])
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
mainWindow = MainWindow()
mainWindow.show()
app.exec()