3D Beam Finite Element Code  1.0
mainwindow.h
Go to the documentation of this file.
1 #ifndef DIALOG_H
2 #define DIALOG_H
3 
4 #include <QMainWindow>
5 #include <QProcess>
6 #include "setup.h"
7 #include "summary.h"
8 
9 class QAction;
10 class QGroupBox;
11 class QLabel;
12 class QLineEdit;
13 class QMenu;
14 class QMenuBar;
15 class QPushButton;
16 class QTextEdit;
17 class QCheckBox;
18 class QSpinBox;
19 class QGridLayout;
20 class QProgressDialog;
21 class QColor;
22 
23 class MainWindow : public QMainWindow
24 {
25  Q_OBJECT
26 
27 public:
28  MainWindow(QWidget *parent = nullptr);
29 
30 protected:
31  void closeEvent(QCloseEvent *event) Q_DECL_OVERRIDE;
32 
33 private slots:
34  void open();
35  void save();
36  void handleFinishedFEA(int exitCode, QProcess::ExitStatus exitStatus);
37  void handleCanceledFEA();
38  void submit();
39  void setNodesText();
40  void setElemsText();
41  void setPropsText();
42  void setBCsText();
43  void setForcesText();
44  void setTiesText();
45  void updateProgressText();
46 
47 private:
48  void createMenu();
49  void createStatusBar();
50  void initializeChooseFilesRow(QGridLayout *glayout,
51  QLineEdit* line_edit,
52  QPushButton* button,
53  int row_number);
54  void createChooseFilesGroupBox();
55  void createOptionsGroupBox();
56  void createSubmitGroupBox();
57 
58  bool checkFileOpens(const std::string &filename);
59  bool checkFilesReady();
60  rapidjson::Document createConfigDoc();
61  void addMemberToDoc(rapidjson::Document &doc,
62  const std::string &key,
63  const std::string& value);
64  void addOptionsToDoc(rapidjson::Document &doc);
65 
66  void writeConfigDocToFile(const rapidjson::Document &doc,
67  const std::string &filename);
68 
69  void readSettings();
70  void writeSettings();
71 
72  void removeTmpFiles();
73  void setLineEditTextFromConfig(QLineEdit *ledit,
74  const std::string &variable,
75  const rapidjson::Document &config_doc);
76  void loadOptionsFromConfig(const rapidjson::Document &config_doc);
77 
78  void solveFEA();
79 
80  QMenuBar *menuBar;
81 
82  QGroupBox *chooseFilesGroupBox;
83  QGroupBox *optionsGroupBox;
84  QGroupBox *submitGroupBox;
85 
86  QPushButton *loadNodesButton;
87  QPushButton *loadElemsButton;
88  QPushButton *loadPropsButton;
89  QPushButton *loadBCsButton;
90  QPushButton *loadForcesButton;
91  QPushButton *loadTiesButton;
92  QPushButton *submitButton;
93 
94  QLineEdit *nodesLineEdit;
95  QLineEdit *elemsLineEdit;
96  QLineEdit *propsLineEdit;
97  QLineEdit *bcsLineEdit;
98  QLineEdit *forcesLineEdit;
99  QLineEdit *tiesLineEdit;
100 
101  QCheckBox *nodalDispCheckBox;
102  QCheckBox *nodalForcesCheckBox;
103  QCheckBox *tieForcesCheckBox;
104  QCheckBox *reportCheckBox;
105 
106  QLineEdit *nodalDispLineEdit;
107  QLineEdit *nodalForcesLineEdit;
108  QLineEdit *tieForcesLineEdit;
109  QLineEdit *reportLineEdit;
110 
111  QLabel *epsilonLabel;
112  QSpinBox *epsilonSpinBox;
113 
114  QLabel *precisionLabel;
115  QSpinBox *precisionSpinBox;
116 
117  QLabel *delimiterLabel;
118  QLineEdit *delimiterLineEdit;
119 
120  QMenu *fileMenu;
121  QAction *exitAction;
122  QAction *openAction;
123  QAction *saveAction;
124  QProgressDialog *progress;
125 
126  QProcess *feaProcess;
127  std::string feaProgram;
128  std::string feaTmpConfigFilename;
129  bool feaTerminated;
130 };
131 
132 #endif // DIALOG_H
MainWindow(QWidget *parent=nullptr)
Definition: mainwindow.cpp:16
void closeEvent(QCloseEvent *event) Q_DECL_OVERRIDE
Definition: mainwindow.cpp:45
Definition: mainwindow.h:23