154 addPathToWatcher(
const QString& path);
156 void addFile(
const QFileInfo&
161 void slotHelpIntro();
162 void slotHelpAbout();
163 void slotHelpAboutQt();
167 void slotLoadSession();
169 void raiseWidgetsOnTabSelection(
int index);
172 void addFiles(QStringList);
173 QMap<QString, QList<double>> readQucsatorDataset(
const QString& filePath);
174 QMap<QString, QList<double>> readNGspiceData(
const QString& filePath);
175 QString extractSParamIndices(
const QString& sparam);
176 void applyDefaultVisualizations(
const QStringList& fileNames);
177 void addOptionalTraces(QMap<QString, QList<double>>& file_data);
179 void removeFile(QString ID);
180 void removeAllFiles();
181 void removeTracesByDataset(
const QString& dataset_to_remove);
182 void removeTraceByProps(DisplayMode mode,
const QString& traceID,
184 void CreateFileWidgets(QString filename,
int position = 0);
187 void setupFileWatcher();
188 void fileChanged(
const QString& path);
189 void directoryChanged(
const QString& path);
192 void addTrace(
const TraceInfo& traceInfo, QColor trace_color,
int trace_width,
193 QString trace_style =
"Solid");
197 void removeAndCollapseRow(QGridLayout* targetLayout,
int row_to_remove);
198 int getNumberOfTraces();
201 void cleanToolsDatasets(
const QString& excludeDataset = QString());
203 void updateTracesCombo();
204 void updateDisplayType();
206 void changeTraceColor();
207 void changeTraceLineStyle();
208 void changeTraceWidth();
209 void changeMarkerLimits();
210 void changeMarkerLimits(QString);
212 void addMarker(
double freq = -1, QString Freq_Marker_Scale = QString(
"MHz"));
214 void removeMarker(
const QString&);
215 void removeAllMarkers();
216 int getNumberOfMarkers();
217 void updateMarkerTable();
218 void updateMarkerNames();
219 void updateMarkerData(QTableWidget& layout, DisplayMode mode,
221 bool getMarkerByPosition(
int position, QString& outMarkerName,
224 void addLimit(
double f_limit1 = -1, QString f_limit1_unit =
"",
225 double f_limit2 = -1, QString f_limit2_unit =
"",
226 double y_limit1 = -1,
double y_limit2 = -1,
227 bool coupled =
true);
229 void removeLimit(QString);
230 void removeAllLimits();
232 void updateLimitNames();
233 int getNumberOfLimits();
236 void coupleSpinBoxes();
238 void updateGridLayout(QGridLayout*);
239 void updateAllPlots(
const QString& datasetName);
240 void updateTracesInWidget(QWidget* widget,
const QString& datasetName);
242 void calculate_Sparameter_trace(QString, QString);
245 void dragEnterEvent(QDragEnterEvent* event)
override;
246 void dropEvent(QDropEvent* event)
override;
249 QDockWidget* dockFiles;
250 QTableWidget* spar_files_Widget;
251 QPushButton *Button_Add_File, *Delete_All_Files;
254 QList<QPushButton*> Button_DeleteFile;
257 QVBoxLayout* vLayout_Files;
258 QWidget* FileList_Widget;
259 QGridLayout* FilesGrid;
260 QList<QLabel*> List_FileNames;
261 QList<QToolButton*> List_RemoveButton;
264 QDockWidget* dockTracesList;
265 QWidget* TracesList_Widget;
266 QGridLayout* TracesGrid;
270 QMap<DisplayMode, QMap<QString, TraceProperties>> traceMap;
272 QTabWidget* traceTabs;
273 QWidget *magnitudePhaseTab, *smithTab, *polarTab, *portImpedanceTab,
274 *stabilityTab, *VSWRTab, *GroupDelayTab;
275 QGridLayout *magnitudePhaseLayout, *smithLayout, *polarLayout,
276 *portImpedanceLayout, *stabilityLayout, *VSWRLayout, *GroupDelayLayout;
279 QPushButton* Lock_axis_settings_Button;
281 QStringList frequency_units;
284 QComboBox *QCombobox_datasets, *QCombobox_display_mode;
286 QPushButton* Button_add_trace;
287 QTableWidget* Traces_Widget;
290 void setupScrollableLayout();
291 void setupScrollAreaForLayout(QGridLayout*& layout, QWidget* parentTab,
292 const QString& objectName);
293 QScrollArea *magnitudePhaseScrollArea, *smithScrollArea, *polarScrollArea,
294 *nuScrollArea, *GroupDelayScrollArea;
297 QMap<QString, QMap<QString, QList<double>>> datasets;
307 QFileSystemWatcher* fileWatcher;
308 QMap<QString, QString> watchedFilePaths;
312 QDockWidget* dockChart;
314 QList<QColor> default_colors;
315 QList<QGraphicsItem*> textLabels;
319 QDockWidget* dockSmithChart;
320 QList<SmithChartWidget::Trace> SmithChartTraces;
324 QDockWidget* dockPolarChart;
325 QList<PolarPlotWidget::Trace> PolarChartTraces;
329 QDockWidget* dockImpedanceChart;
330 QList<RectangularPlotWidget::Trace> impedanceChartTraces;
334 QDockWidget* dockStabilityChart;
335 QList<RectangularPlotWidget::Trace> stabilityChartTraces;
339 QDockWidget* dockVSWRChart;
340 QList<RectangularPlotWidget::Trace> VSWRChartTraces;
344 QDockWidget* dockGroupDelayChart;
345 QList<RectangularPlotWidget::Trace> GroupDelayTraces;
348 QDockWidget* dockMarkers;
349 QWidget* Marker_Widget;
350 QGridLayout* MarkersGrid;
351 QPushButton *Button_add_marker, *Button_Remove_All_Markers;
352 QTableWidget *tableMarkers_Magnitude_Phase, *tableMarkers_Smith,
353 *tableMarkers_Polar, *tableMarkers_PortImpedance, *tableMarkers_Stability,
354 *tableMarkers_VSWR, *tableMarkers_GroupDelay;
355 QMap<QString, MarkerProperties>
359 double getMarkerFreq(QString);
362 QDockWidget* dockLimits;
363 QWidget* Limits_Widget;
364 QGridLayout* LimitsGrid;
365 QPushButton *Button_add_Limit, *Button_Remove_All_Limits;
366 QDoubleSpinBox* Limits_Offset;
367 QMap<QString, LimitProperties>
372 QDockWidget* dockTools;
385 QLabel* LabelExportSchematic;
386 QPushButton* ButtonExportSchematic;
387 QComboBox* ComboExportSchematic, *ComboExportOutputMethod;
390 updateSchematicContent();
392 void callTools(
bool visible);
393 void onToolsTabChanged(
int index);
396 QTabWidget* toolsTabs;
402 QWidget* FilterToolTab;
406 QWidget* MatchingToolTab;
424 void loadSession(QString);
427 void saveRectangularPlotSettings(QXmlStreamWriter& xml,
429 const QString& elementName);
430 void loadRectangularPlotSettings(QXmlStreamReader& xml,
432 const QString& elementName);
435 const QString& elementName);
437 const QString& elementName);
439 void savePolarPlotSettings(QXmlStreamWriter& xml,
PolarPlotWidget* widget,
440 const QString& elementName);
441 void loadPolarPlotSettings(QXmlStreamReader& xml,
PolarPlotWidget* widget,
442 const QString& elementName);
445 QDockWidget* dockNotes;
449 std::vector<QString> recentFiles;
450 QMenu* recentFilesMenu;
451 void updateRecentFilesMenu();
452 void loadRecentFiles();
453 void addRecentFile(
const QString&);
454 void clearRecentFiles();
455 void saveRecentFiles();
458 void CreateMenuBar();
459 void CreateDisplayWidgets();
461 void CreateRightPanel();
462 void setFileManagementDock();
463 void setTraceManagementDock();
464 void setMarkerManagementDock();
465 void setLimitManagementDock();
469 void getMinMaxValues(QString, QString, qreal&, qreal&, qreal&, qreal&);
470 void adjust_x_axis_to_file(QString);
471 void adjust_y_axis_to_trace(QString, QString);
472 void adjust_x_axis_div();
475 void setupSimulationWatcher();
476 QStringList getWatchDirectories()
const;
477 bool isSparamFile(
const QString& path);
479 QStringList filePaths;
483 void updateSimulation(
485 void updateSimulation();
486 void updateSubstrate();
487 void exportSchematic();