55 lines
1.8 KiB
C++
55 lines
1.8 KiB
C++
#include "tracewidgetvna.h"
|
|
|
|
#include <QFileDialog>
|
|
#include "Traces/traceimportdialog.h"
|
|
#include "Traces/traceexportdialog.h"
|
|
|
|
TraceWidgetVNA::TraceWidgetVNA(TraceModel &model, QWidget *parent)
|
|
: TraceWidget(model, parent)
|
|
{
|
|
|
|
}
|
|
|
|
void TraceWidgetVNA::exportDialog()
|
|
{
|
|
auto e = new TraceExportDialog(model);
|
|
// Attempt to set default traces (this will result in correctly populated
|
|
// 2 port export if the initial 4 traces have not been modified)
|
|
e->setPortNum(2);
|
|
auto traces = model.getTraces();
|
|
for(unsigned int i=0;i<4;i++) {
|
|
if(i >= traces.size()) {
|
|
break;
|
|
}
|
|
e->setTrace(i%2, i/2, traces[i]);
|
|
}
|
|
e->show();
|
|
}
|
|
|
|
void TraceWidgetVNA::importDialog()
|
|
{
|
|
auto filename = QFileDialog::getOpenFileName(nullptr, "Open measurement file", "", "Touchstone files (*.s1p *.s2p *.s3p *.s4p)", nullptr, QFileDialog::DontUseNativeDialog);
|
|
if (filename.length() > 0) {
|
|
auto t = Touchstone::fromFile(filename.toStdString());
|
|
std::vector<Trace*> traces;
|
|
for(unsigned int i=0;i<t.ports()*t.ports();i++) {
|
|
auto trace = new Trace();
|
|
trace->fillFromTouchstone(t, i, filename);
|
|
unsigned int sink = i / t.ports() + 1;
|
|
unsigned int source = i % t.ports() + 1;
|
|
trace->setName("S"+QString::number(sink)+QString::number(source));
|
|
traces.push_back(trace);
|
|
}
|
|
// contruct prefix from filename
|
|
// remove any directory names (keep only the filename itself)
|
|
int lastSlash = qMax(filename.lastIndexOf('/'), filename.lastIndexOf('\\'));
|
|
if(lastSlash != -1) {
|
|
filename.remove(0, lastSlash + 1);
|
|
}
|
|
// remove file type
|
|
filename.truncate(filename.indexOf('.'));
|
|
auto i = new TraceImportDialog(model, traces, filename+"_");
|
|
i->show();
|
|
}
|
|
}
|