184 void addFile(
const QFileInfo& fileInfo);
191 void slotHelpIntro();
196 void slotHelpAbout() {
202 void slotHelpAboutQt() { QMessageBox::aboutQt(
this, tr(
"About Qt")); }
205 void slotQuit() { qApp->quit(); }
215 void slotLoadSession();
218 void slotSetLightTheme();
221 void slotSetDarkTheme();
224 void slotLoadCustomTheme();
241 void raiseWidgetsOnTabSelection(
int index);
264 void addFiles(QStringList);
279 void removeFile(QString ID);
285 void removeAllFiles();
295 void removeTracesByDataset(
const QString& dataset_to_remove);
300 QMap<QString, QList<double>> readQucsatorDataset(
const QString& filePath);
305 QMap<QString, QList<double>> readNGspiceData(
const QString& filePath);
310 QString extractSParamIndices(
const QString& sparam);
323 void applyDefaultVisualizations(
const QStringList& fileNames);
337 void addOptionalTraces(QMap<QString, QList<double>>& file_data);
339 void removeTraceByProps(
DisplayMode mode,
const QString& traceID,
345 void CreateFileWidgets(QString filename,
int position = 0);
353 void setupFileWatcher();
365 void fileChanged(
const QString& path);
376 void directoryChanged(
const QString& path);
388 void addTrace(
const TraceInfo& traceInfo, QColor trace_color,
int trace_width,
389 QString trace_style =
"Solid");
395 void removeAllTraces();
410 void removeAndCollapseRow(QGridLayout* targetLayout,
int row_to_remove);
414 int getNumberOfTraces() {
return traceMap.keys().size(); }
418 void cleanToolsDatasets(
const QString& excludeDataset = QString());
425 void updateTracesCombo();
428 void updateDisplayType();
431 void changeTraceColor();
432 void changeTraceLineStyle();
433 void changeTraceWidth();
439 void changeMarkerLimits();
445 void changeMarkerLimits(QString);
451 void addMarker(
double freq = -1, QString Freq_Marker_Scale = QString(
"MHz"));
460 void removeMarker(
const QString&);
466 void removeAllMarkers();
470 int getNumberOfMarkers() {
return markerMap.keys().size(); }
473 void updateMarkerTable();
477 void updateMarkerNames();
483 void updateMarkerData(QTableWidget& layout,
DisplayMode mode, QStringList header);
490 bool getMarkerByPosition(
int position, QString& outMarkerName,
MarkerProperties& outProperties);
501 void addLimit(
double f_limit1 = -1, QString f_limit1_unit =
"",
502 double f_limit2 = -1, QString f_limit2_unit =
"",
503 double y_limit1 = -1,
double y_limit2 = -1,
504 bool coupled =
true);
514 void onLimitDeleteClicked(
bool);
534 void removeLimit(QString);
543 void removeAllLimits();
566 void updateLimitNames();
570 void onLimitsOffsetChanged(
double newOffset);
574 int getNumberOfLimits() {
return limitsMap.keys().size(); }
595 void coupleSpinBoxes();
605 void updateGridLayout(QGridLayout*);
609 void updateAllPlots(
const QString& datasetName);
622 void updateTracesInWidget(QWidget* widget,
const QString& datasetName);
627 void calculate_Sparameter_trace(QString, QString);
636 void dropEvent(QDropEvent* event)
override;
641 QDockWidget* dockFiles;
642 QTableWidget* spar_files_Widget;
643 QPushButton *Button_Add_File;
644 QPushButton *Delete_All_Files;
645 QList<QPushButton*> Button_DeleteFile;
646 QVBoxLayout* vLayout_Files;
647 QWidget* FileList_Widget;
648 QGridLayout* FilesGrid;
649 QList<QLabel*> List_FileNames;
650 QList<QToolButton*> List_RemoveButton;
653 QDockWidget* dockTracesList;
654 QWidget* TracesList_Widget;
655 QGridLayout* TracesGrid;
658 QMap<DisplayMode, QMap<QString, TraceProperties>> traceMap;
660 QTabWidget* traceTabs;
661 QWidget *magnitudePhaseTab;
664 QWidget *portImpedanceTab;
665 QWidget *stabilityTab;
667 QWidget *GroupDelayTab;
669 QGridLayout *magnitudePhaseLayout;
670 QGridLayout *smithLayout;
671 QGridLayout *polarLayout;
672 QGridLayout *portImpedanceLayout;
673 QGridLayout *stabilityLayout;
674 QGridLayout *VSWRLayout;
675 QGridLayout *GroupDelayLayout;
679 QPushButton* Lock_axis_settings_Button;
681 QStringList frequency_units;
682 QComboBox *QCombobox_datasets;
683 QComboBox *QCombobox_display_mode;
685 QPushButton* Button_add_trace;
686 QPushButton* Button_Remove_all;
687 QTableWidget* Traces_Widget;
692 void setupScrollableLayout();
698 void setupScrollAreaForLayout(QGridLayout*& layout, QWidget* parentTab,
699 const QString& objectName);
703 QScrollArea *magnitudePhaseScrollArea;
704 QScrollArea *smithScrollArea;
705 QScrollArea *polarScrollArea;
706 QScrollArea *nuScrollArea;
707 QScrollArea *GroupDelayScrollArea;
711 QMap<QString, QMap<QString, QList<double>>> datasets;
721 QFileSystemWatcher* fileWatcher;
722 QMap<QString, QString> watchedFilePaths;
728 QDockWidget* dockChart;
730 QList<QColor> default_colors;
731 QList<QGraphicsItem*> textLabels;
735 QDockWidget* dockSmithChart;
736 QList<SmithChartWidget::Trace> SmithChartTraces;
740 QDockWidget* dockPolarChart;
741 QList<PolarPlotWidget::Trace> PolarChartTraces;
745 QDockWidget* dockImpedanceChart;
746 QList<RectangularPlotWidget::Trace> impedanceChartTraces;
750 QDockWidget* dockStabilityChart;
751 QList<RectangularPlotWidget::Trace> stabilityChartTraces;
755 QDockWidget* dockVSWRChart;
756 QList<RectangularPlotWidget::Trace> VSWRChartTraces;
760 QDockWidget* dockGroupDelayChart;
761 QList<RectangularPlotWidget::Trace> GroupDelayTraces;
764 QDockWidget* dockMarkers;
765 QWidget* Marker_Widget;
766 QGridLayout* MarkersGrid;
767 QPushButton *Button_add_marker;
768 QPushButton *Button_Remove_All_Markers;
770 QTableWidget *tableMarkers_Magnitude_Phase;
771 QTableWidget *tableMarkers_Smith;
772 QTableWidget *tableMarkers_Polar;
773 QTableWidget *tableMarkers_PortImpedance;
774 QTableWidget *tableMarkers_Stability;
775 QTableWidget *tableMarkers_VSWR;
776 QTableWidget *tableMarkers_GroupDelay;
779 QMap<QString, MarkerProperties> markerMap;
785 double getMarkerFreq(QString);
788 QDockWidget* dockLimits;
789 QWidget* Limits_Widget;
790 QGridLayout* LimitsGrid;
791 QPushButton *Button_add_Limit;
792 QPushButton *Button_Remove_All_Limits;
796 QMap<QString, LimitProperties> limitsMap;
799 QDockWidget* dockTools;
801 QTabWidget* toolsTabWidget;
809 QLabel* LabelExportSchematic;
810 QPushButton* ButtonExportSchematic;
811 QComboBox* ComboExportSchematic;
812 QComboBox* ComboExportOutputMethod;
816 void updateSchematicContent();
826 void callTools(
bool visible);
830 void onToolsTabChanged(
int index);
833 QTabWidget* toolsTabs;
839 QStringList Tools_Datasets;
865 void loadSession(QString path);
873 void saveRectangularPlotSettings(QXmlStreamWriter& xml,
875 const QString& elementName);
883 void loadRectangularPlotSettings(QXmlStreamReader& xml,
885 const QString& elementName);
894 const QString& elementName);
903 const QString& elementName);
911 void savePolarPlotSettings(QXmlStreamWriter& xml,
PolarPlotWidget* widget,
912 const QString& elementName);
920 void loadPolarPlotSettings(QXmlStreamReader& xml,
PolarPlotWidget* widget,
921 const QString& elementName);
924 QDockWidget* dockNotes;
928 std::vector<QString> recentFiles;
929 QMenu* recentFilesMenu;
932 void updateRecentFilesMenu();
936 void loadRecentFiles();
940 void addRecentFile(
const QString&);
943 void clearRecentFiles(){ recentFiles.clear(); }
947 void saveRecentFiles();
950 void CreateMenuBar();
951 void CreateDisplayWidgets();
952 void CreateRightPanel();
953 void setFileManagementDock();
954 void setTraceManagementDock();
955 void setMarkerManagementDock();
956 void setLimitManagementDock();
967 void getMinMaxValues(QString, QString, qreal&, qreal&, qreal&, qreal&);
971 void adjust_x_axis_to_file(QString);
972 void adjust_y_axis_to_trace(QString, QString);
973 void adjust_x_axis_div();
976 void setupSimulationWatcher();
977 QStringList getWatchDirectories()
const;
984 bool isSparamFile(
const QString& path);
986 QStringList filePaths;
992 QMenu *CreateCalculatorsMenu();
996 void applyTheme(
const QString& themeName);
1004 void updateSimulation();
1007 void updateSubstrate();
1010 void exportSchematic();
1017 void slotGammaCalculator();
1020 void slotImpedanceCalculator();
1023 void slotSwrS11Calculator();
1026 void slotOctaveBWCalculator();
1029 void slotRFPowerUnitCalculator();
1032 void slotFrequencyToWavelengthCalculator();
1035 void slotFreeSpaceLossCalculator();
1038 void slotImageFrequencyCalculator();
1041 void slotSecondaryImageFrequencyCalculator();
1045 void slotVoltageDividerCalculator();
1048 void slotParallelResistorsCalculator();
1051 void slotSeriesCapacitorsCalculator();
1054 void slotParallelInductorsCalculator();