SedSat3 1.1.6
Sediment Source Apportionment Tool - Advanced statistical methods for environmental pollution research
Loading...
Searching...
No Matches
mainwindow.h
Go to the documentation of this file.
1#ifndef MAINWINDOW_H
2#define MAINWINDOW_H
3
4#include <QMainWindow>
5#include <memory>
6#include <string>
7#include <map>
8#include <QStandardItemModel>
9#include <QStandardItem>
10#include "sourcesinkdata.h"
11#include <QJsonDocument>
12#ifdef USE_QCHARTS
13#include "GeneralChartPlotter.h"
14#else
15#include "generalplotter.h"
16#endif // USE_QCHARTS
17
19#include "conductor.h"
20#include "guihost.h"
21
23 elementRole = Qt::ItemDataRole::UserRole + 1,
24 groupRole = Qt::ItemDataRole::UserRole + 2,
25 sampleRole = Qt::ItemDataRole::UserRole + 3
26};
27
28QT_BEGIN_NAMESPACE
29namespace Ui { class MainWindow; }
30QT_END_NAMESPACE
31
41 class MainWindow : public QMainWindow
42{
43 Q_OBJECT
44
45public:
50 explicit MainWindow(QWidget* parent = nullptr);
51
56
61 void SetSinkSheet(int i) { sinkSheet = i; }
62
68 void WriteMessageOnScreen(const QString& text, QColor color = Qt::black);
69
75 const SourceSinkData* Data() const { return &dataCollection; }
82 bool Execute(const std::string& command, std::map<std::string, std::string> arguments);
83
84private:
85 // UI Setup methods
93 void setupConnections();
94
101 void setupToolsView();
102
109 void setupResultsView();
110
116 void setupToolBar();
117
118 // Data import/export methods
124 bool ReadExcel(const QString& filename);
125
126 QString resourcesPath() const;
127
128 // Model conversion methods
129 QStandardItemModel* ToQStandardItemModel(const SourceSinkData* srcsinkdata);
130 QStandardItem* ToQStandardItem(const QString& key, const SourceSinkData* srcsinkdata);
131 QStandardItem* ElementsToQStandardItem(const QString& key, const SourceSinkData* srcsinkdata);
132 QStandardItem* ToQStandardItem(const QString& key, const QJsonObject& json);
133 QStandardItemModel* ToQStandardItemModel(const QJsonDocument& jsondocument);
134
135 QString TreeQStringSelectedType();
136
137 // JSON file I/O
138 QJsonDocument loadJson(const QString& fileName);
139 void saveJson(const QJsonDocument& document, const QString& fileName);
140
141 // Table initialization
142 void InitiateTables();
143
144 // Recent files management
145 void readRecentFilesList();
146 void addToRecentFiles(const QString &fileName, bool addToFile);
148 void removeFromRecentList(QAction* selectedFileAction);
149 bool CreateFileIfDoesNotExist(const QString &fileName);
150
151 // Project file management
152 bool LoadModel(const QString& fileName);
153
154 // Toolbar population
156
157private slots:
158 // File operations
159 void on_import_excel();
160
161 // Plotting
163
164 // Tree view handling
165 void on_tree_selectionChanged(const QItemSelection& changed);
166 void preparetreeviewMenu(const QPoint& pos);
168
169 // Data management
172 void onOMSizeCorrection();
173
174 // Tool execution
175 void on_tool_executed(const QModelIndex& index);
176 void on_old_result_requested(const QModelIndex& index);
177
178 // Application menu
179 void onAboutTriggered();
181
182
183private:
184 // Project management
190 QString getSaveFilePath(bool promptUser);
191
197 bool saveProjectToFile(const QString& filePath);
198
203 QJsonObject buildProjectJson() const;
204
209 QJsonObject buildResultsJson() const;
210
211 void onSaveProject();
212 void onSaveProjectAs();
213 void onOpenProject();
215
216 // Results management
217 void DeleteResults();
218 void onCustomContextMenu(const QPoint& pos);
219
220 // Display
222 void on_ZoomExtends();
223
235 void addToolBarAction(const QString& text,
236 const QString& iconPath,
237 const QString& toolTip,
238 void (MainWindow::* slot)());
239
240 Ui::MainWindow* ui;
241
242 // Data
244 int sinkSheet = -1;
245
246 // Visualization
247#ifdef USE_QCHARTS
248 GeneralChartPlotter* plotter = nullptr;
249#else
251#endif // USE_QCHARTS
252
253
254 std::unique_ptr<Interface> plottedData;
255
256 // Models
257 std::unique_ptr<QStandardItemModel> columnViewModel;
258 std::unique_ptr<QStandardItemModel> resultsViewModel;
259
260 // Context menus and actions
261 QMenu* ResultscontextMenu = nullptr;
262 QAction* DeleteAction = nullptr;
263
264 // JSON configuration
265 QJsonDocument formsstructure;
266
267 // State tracking
268 QString selectedTreeItemType = "None";
271 QStringList recentFiles;
272
273 // Main components
274 std::unique_ptr<QMenu> menu;
275 std::unique_ptr<QWidget> centralform;
276 std::unique_ptr<GuiHost> analysis_host;
277 std::unique_ptr<Conductor> conductor;
279};
280
285QString localAppFolderAddress();
286
287#endif // MAINWINDOW_H
Main application window for SedSAT3 source apportionment analysis.
Definition mainwindow.h:42
void on_actionRecent_triggered()
void addToolBarAction(const QString &text, const QString &iconPath, const QString &toolTip, void(MainWindow::*slot)())
Helper to add an action to the toolbar with icon and connection.
QString resourcesPath() const
void on_old_result_requested(const QModelIndex &index)
bool ReadExcel(const QString &filename)
Reads elemental profile data from Excel file.
QStringList recentFiles
List of recently opened files.
Definition mainwindow.h:271
SourceSinkData * Data()
Returns pointer to the main data collection.
Definition mainwindow.h:74
QMenu * ResultscontextMenu
Context menu for results view.
Definition mainwindow.h:261
void DeleteResults()
GeneralPlotter * plotter
Main plotting widget.
Definition mainwindow.h:250
SourceSinkData dataCollection
Main data collection for analysis.
Definition mainwindow.h:243
void showdistributionsforelements()
void on_show_data_as_table()
QString ProjectFileName
Current project file path.
Definition mainwindow.h:270
void onOpenProject()
QStandardItem * ToQStandardItem(const QString &key, const SourceSinkData *srcsinkdata)
std::unique_ptr< QStandardItemModel > columnViewModel
Model for column/data tree view.
Definition mainwindow.h:257
bool LoadModel(const QString &fileName)
void setupResultsView()
Initializes the results tree view and context menu.
void WriteMessageOnScreen(const QString &text, QColor color=Qt::black)
Writes a message to the application's message display area.
Ui::MainWindow * ui
Definition mainwindow.h:240
bool treeItemChangedProgramatically
Flag for programmatic tree changes.
Definition mainwindow.h:269
void setupToolsView()
Initializes the tools tree view.
bool CreateFileIfDoesNotExist(const QString &fileName)
void Populate_General_ToolBar()
std::unique_ptr< QStandardItemModel > resultsViewModel
Model for results tree view.
Definition mainwindow.h:258
const SourceSinkData * Data() const
Definition mainwindow.h:75
bool saveProjectToFile(const QString &filePath)
Saves project data to the specified file.
QString getSaveFilePath(bool promptUser)
Gets the file path for saving, prompting user if needed.
std::unique_ptr< Conductor > conductor
Analysis command coordinator.
Definition mainwindow.h:277
void on_Options_triggered()
void addToRecentFiles(const QString &fileName, bool addToFile)
QJsonObject buildProjectJson() const
Builds the complete project JSON object.
QJsonDocument formsstructure
Forms structure definitions.
Definition mainwindow.h:265
void SetSinkSheet(int i)
Sets the sink sheet index for Excel import.
Definition mainwindow.h:61
QString selectedTreeItemType
Currently selected tree item type.
Definition mainwindow.h:268
void on_constituent_properties_triggered()
QStandardItemModel * ToQStandardItemModel(const SourceSinkData *srcsinkdata)
QString TreeQStringSelectedType()
void on_import_excel()
void removeFromRecentList(QAction *selectedFileAction)
void writeRecentFilesList()
void InitiateTables()
void setupConnections()
Sets up all signal-slot connections for UI elements.
std::unique_ptr< QMenu > menu
Main menu.
Definition mainwindow.h:274
QJsonObject buildResultsJson() const
Builds the results section of the project JSON.
QJsonDocument loadJson(const QString &fileName)
std::unique_ptr< QWidget > centralform
Central form widget.
Definition mainwindow.h:275
QAction * DeleteAction
Delete action for results.
Definition mainwindow.h:262
std::unique_ptr< Interface > plottedData
Currently plotted data interface.
Definition mainwindow.h:254
void preparetreeviewMenu(const QPoint &pos)
void on_ZoomExtends()
void onOMSizeCorrection()
std::unique_ptr< GuiHost > analysis_host
Reports analyses through this window.
Definition mainwindow.h:276
void onAboutTriggered()
QStandardItem * ElementsToQStandardItem(const QString &key, const SourceSinkData *srcsinkdata)
void readRecentFilesList()
int sinkSheet
Index of sink sheet in Excel import.
Definition mainwindow.h:244
void on_plot_raw_elemental_profiles()
void setupToolBar()
Initializes the general toolbar.
void onCustomContextMenu(const QPoint &pos)
QModelIndex indexresultselected
Currently selected result index.
Definition mainwindow.h:278
void on_tree_selectionChanged(const QItemSelection &changed)
~MainWindow()
Destructor - cleans up UI resources.
bool Execute(const std::string &command, std::map< std::string, std::string > arguments)
Executes a specified analysis command.
void onSaveProject()
void saveJson(const QJsonDocument &document, const QString &fileName)
void onIncludeExcludeSample()
void on_tool_executed(const QModelIndex &index)
void onSaveProjectAs()
ItemDataRoles
Definition mainwindow.h:22
@ elementRole
Definition mainwindow.h:23
@ sampleRole
Definition mainwindow.h:25
@ groupRole
Definition mainwindow.h:24
QString localAppFolderAddress()
Returns the local application folder address.