#include "tracewidgetvna.h" #include #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 traces; for(unsigned int i=0;ifillFromTouchstone(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(); } }