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 setEquationsText();
46  void updateProgressText();
47 
48 private:
49  void createMenu();
50  void createStatusBar();
51  void initializeChooseFilesRow(QGridLayout *glayout,
52  QLineEdit* line_edit,
53  QPushButton* button,
54  int row_number);
55  void createChooseFilesGroupBox();
56  void createOptionsGroupBox();
57  void createSubmitGroupBox();
58 
59  bool checkFileOpens(const std::string &filename);
60  bool checkFilesReady();
61  rapidjson::Document createConfigDoc();
62  void addMemberToDoc(rapidjson::Document &doc,
63  const std::string &key,
64  const std::string& value);
65  void addOptionsToDoc(rapidjson::Document &doc);
66 
67  void writeConfigDocToFile(const rapidjson::Document &doc,
68  const std::string &filename);
69 
70  void readSettings();
71  void writeSettings();
72 
73  void removeTmpFiles();
74  void setLineEditTextFromConfig(QLineEdit *ledit,
75  const std::string &variable,
76  const rapidjson::Document &config_doc);
77  void loadOptionsFromConfig(const rapidjson::Document &config_doc);
78 
79  void solveFEA();
80 
81  QMenuBar *menuBar;
82 
83  QGroupBox *chooseFilesGroupBox;
84  QGroupBox *optionsGroupBox;
85  QGroupBox *submitGroupBox;
86 
87  QPushButton *loadNodesButton;
88  QPushButton *loadElemsButton;
89  QPushButton *loadPropsButton;
90  QPushButton *loadBCsButton;
91  QPushButton *loadForcesButton;
92  QPushButton *loadTiesButton;
93  QPushButton *loadEquationsButton;
94  QPushButton *submitButton;
95 
96  QLineEdit *nodesLineEdit;
97  QLineEdit *elemsLineEdit;
98  QLineEdit *propsLineEdit;
99  QLineEdit *bcsLineEdit;
100  QLineEdit *forcesLineEdit;
101  QLineEdit *tiesLineEdit;
102  QLineEdit *equationsLineEdit;
103 
104  QCheckBox *nodalDispCheckBox;
105  QCheckBox *nodalForcesCheckBox;
106  QCheckBox *tieForcesCheckBox;
107  QCheckBox *reportCheckBox;
108 
109  QLineEdit *nodalDispLineEdit;
110  QLineEdit *nodalForcesLineEdit;
111  QLineEdit *tieForcesLineEdit;
112  QLineEdit *reportLineEdit;
113 
114  QLabel *epsilonLabel;
115  QSpinBox *epsilonSpinBox;
116 
117  QLabel *precisionLabel;
118  QSpinBox *precisionSpinBox;
119 
120  QLabel *delimiterLabel;
121  QLineEdit *delimiterLineEdit;
122 
123  QMenu *fileMenu;
124  QAction *exitAction;
125  QAction *openAction;
126  QAction *saveAction;
127  QProgressDialog *progress;
128 
129  QProcess *feaProcess;
130  std::string feaProgram;
131  std::string feaTmpConfigFilename;
132  bool feaTerminated;
133 };
134 
135 #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