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
22 elementRole = Qt::ItemDataRole::UserRole + 1,
23 groupRole = Qt::ItemDataRole::UserRole + 2,
24 sampleRole = Qt::ItemDataRole::UserRole + 3
25};
26
27QT_BEGIN_NAMESPACE
28namespace Ui { class MainWindow; }
29QT_END_NAMESPACE
30
40 class MainWindow : public QMainWindow
41{
42 Q_OBJECT
43
44public:
49 explicit MainWindow(QWidget* parent = nullptr);
50
55
60 void SetSinkSheet(int i) { sinkSheet = i; }
61
67 void WriteMessageOnScreen(const QString& text, QColor color = Qt::black);
68
74 const SourceSinkData* Data() const { return &dataCollection; }
81 bool Execute(const std::string& command, std::map<std::string, std::string> arguments);
82
83private:
84 // UI Setup methods
92 void setupConnections();
93
100 void setupToolsView();
101
108 void setupResultsView();
109
115 void setupToolBar();
116
117 // Data import/export methods
123 bool ReadExcel(const QString& filename);
124
125 QString resourcesPath() const;
126
127 // Model conversion methods
128 QStandardItemModel* ToQStandardItemModel(const SourceSinkData* srcsinkdata);
129 QStandardItem* ToQStandardItem(const QString& key, const SourceSinkData* srcsinkdata);
130 QStandardItem* ElementsToQStandardItem(const QString& key, const SourceSinkData* srcsinkdata);
131 QStandardItem* ToQStandardItem(const QString& key, const QJsonObject& json);
132 QStandardItemModel* ToQStandardItemModel(const QJsonDocument& jsondocument);
133
134 QString TreeQStringSelectedType();
135
136 // JSON file I/O
137 QJsonDocument loadJson(const QString& fileName);
138 void saveJson(const QJsonDocument& document, const QString& fileName);
139
140 // Table initialization
141 void InitiateTables();
142
143 // Recent files management
144 void readRecentFilesList();
145 void addToRecentFiles(const QString &fileName, bool addToFile);
147 void removeFromRecentList(QAction* selectedFileAction);
148 bool CreateFileIfDoesNotExist(const QString &fileName);
149
150 // Project file management
151 bool LoadModel(const QString& fileName);
152
153 // Toolbar population
155
156private slots:
157 // File operations
158 void on_import_excel();
159
160 // Plotting
162
163 // Tree view handling
164 void on_tree_selectionChanged(const QItemSelection& changed);
165 void preparetreeviewMenu(const QPoint& pos);
167
168 // Data management
171 void onOMSizeCorrection();
172
173 // Tool execution
174 void on_tool_executed(const QModelIndex& index);
175 void on_old_result_requested(const QModelIndex& index);
176
177 // Application menu
178 void onAboutTriggered();
180
181
182private:
183 // Project management
189 QString getSaveFilePath(bool promptUser);
190
196 bool saveProjectToFile(const QString& filePath);
197
202 QJsonObject buildProjectJson() const;
203
208 QJsonObject buildResultsJson() const;
209
210 void onSaveProject();
211 void onSaveProjectAs();
212 void onOpenProject();
214
215 // Results management
216 void DeleteResults();
217 void onCustomContextMenu(const QPoint& pos);
218
219 // Display
221 void on_ZoomExtends();
222
234 void addToolBarAction(const QString& text,
235 const QString& iconPath,
236 const QString& toolTip,
237 void (MainWindow::* slot)());
238
239 Ui::MainWindow* ui;
240
241 // Data
243 int sinkSheet = -1;
244
245 // Visualization
246#ifdef USE_QCHARTS
247 GeneralChartPlotter* plotter = nullptr;
248#else
250#endif // USE_QCHARTS
251
252
253 std::unique_ptr<Interface> plottedData;
254
255 // Models
256 std::unique_ptr<QStandardItemModel> columnViewModel;
257 std::unique_ptr<QStandardItemModel> resultsViewModel;
258
259 // Context menus and actions
260 QMenu* ResultscontextMenu = nullptr;
261 QAction* DeleteAction = nullptr;
262
263 // JSON configuration
264 QJsonDocument formsstructure;
265
266 // State tracking
267 QString selectedTreeItemType = "None";
270 QStringList recentFiles;
271
272 // Main components
273 std::unique_ptr<QMenu> menu;
274 std::unique_ptr<QWidget> centralform;
275 std::unique_ptr<Conductor> conductor;
277};
278
283QString localAppFolderAddress();
284
285#endif // MAINWINDOW_H
Main application window for SedSAT3 source apportionment analysis.
Definition mainwindow.h:41
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:270
SourceSinkData * Data()
Returns pointer to the main data collection.
Definition mainwindow.h:73
QMenu * ResultscontextMenu
Context menu for results view.
Definition mainwindow.h:260
void DeleteResults()
GeneralPlotter * plotter
Main plotting widget.
Definition mainwindow.h:249
SourceSinkData dataCollection
Main data collection for analysis.
Definition mainwindow.h:242
void showdistributionsforelements()
void on_show_data_as_table()
QString ProjectFileName
Current project file path.
Definition mainwindow.h:269
void onOpenProject()
QStandardItem * ToQStandardItem(const QString &key, const SourceSinkData *srcsinkdata)
std::unique_ptr< QStandardItemModel > columnViewModel
Model for column/data tree view.
Definition mainwindow.h:256
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:239
bool treeItemChangedProgramatically
Flag for programmatic tree changes.
Definition mainwindow.h:268
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:257
const SourceSinkData * Data() const
Definition mainwindow.h:74
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:275
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:264
void SetSinkSheet(int i)
Sets the sink sheet index for Excel import.
Definition mainwindow.h:60
QString selectedTreeItemType
Currently selected tree item type.
Definition mainwindow.h:267
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:273
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:274
QAction * DeleteAction
Delete action for results.
Definition mainwindow.h:261
std::unique_ptr< Interface > plottedData
Currently plotted data interface.
Definition mainwindow.h:253
void preparetreeviewMenu(const QPoint &pos)
void on_ZoomExtends()
void onOMSizeCorrection()
void onAboutTriggered()
QStandardItem * ElementsToQStandardItem(const QString &key, const SourceSinkData *srcsinkdata)
void readRecentFilesList()
int sinkSheet
Index of sink sheet in Excel import.
Definition mainwindow.h:243
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:276
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:21
@ elementRole
Definition mainwindow.h:22
@ sampleRole
Definition mainwindow.h:24
@ groupRole
Definition mainwindow.h:23
QString localAppFolderAddress()
Returns the local application folder address.