HAL  v4.5.0-83-g30c8f0afc
The Hardware Analyzer - a comprehensive reverse engineering and manipulation framework for gate-level netlists.
wizard.h
Go to the documentation of this file.
1 #ifndef WIZARD_H
2 #define WIZARD_H
3 
4 #include <QWizard>
5 #include <QWizardPage>
6 #include <QLabel>
7 #include <QLineEdit>
8 #include <QVBoxLayout>
9 #include <QPushButton>
10 #include <vector>
11 #include <QDialogButtonBox>
12 #include <QTableView>
13 #include <QDialogButtonBox>
14 #include <QSpinBox>
15 #include <QTableWidget>
16 #include <QComboBox>
17 #include <QRadioButton>
18 #include <QSortFilterProxyModel>
19 #include <QCheckBox>
20 #include <QTextEdit>
21 #include <QFile>
22 #include "hal_core/netlist/gate.h"
23 #include "wave_widget.h"
27 
28 namespace hal {
29 
33  class Wizard : public QWizard {
34  Q_OBJECT
35 
36  public:
40 
41  private:
42  NetlistSimulatorController *mController;
43  SimulationSettings *mSettings;
44  };
45 
49  class PageSelectGates : public QWizardPage {
50  Q_OBJECT
51 
52  public:
54 
55  virtual bool validatePage() override;
56 
57  std::vector<Gate*> selectedGates() const;
58 
59  public Q_SLOTS:
60  void onSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected);
61 
62  private:
63  QPushButton* mButAll;
64  QPushButton* mButSel;
65  QPushButton* mButNone;
66  QTableView* mTableView;
67  QDialogButtonBox* mButtonBox;
68 
69  NetlistSimulatorController *mController;
70 
71  private Q_SLOTS:
72  void handleCurrentGuiSelection();
73  };
74 
78  class PageClock : public QWizardPage {
79  Q_OBJECT
80 
81  public:
82  PageClock(NetlistSimulatorController *controller, QWidget *parent=nullptr);
83 
84  virtual bool validatePage() override;
85  virtual void initializePage() override;
86 
87  private Q_SLOTS:
88  void dontUseClockChanged(bool state);
89 
90  private:
91  QComboBox* mComboNet;
92  QSpinBox* mSpinPeriod;
93  QSpinBox* mSpinStartValue;
94  QSpinBox* mSpinDuration;
95  QCheckBox* mDontUseClock;
96 
97  NetlistSimulatorController *mController;
98 
99  int netIndex() const { return mComboNet->currentIndex(); }
100  int period() const { return mSpinPeriod->value(); }
101  int startValue() const { return mSpinStartValue->value(); }
102  int duration() const { return mSpinDuration->value(); }
103  bool dontUseClock() const { return mDontUseClock->isChecked(); }
104  };
105 
109  class PageEngine : public QWizardPage {
110  Q_OBJECT
111 
112  public:
113  PageEngine(NetlistSimulatorController *controller, Wizard* parent=nullptr);
114 
115  virtual bool validatePage() override;
116  int nextId() const override;
117 
118  private:
119  QVBoxLayout *mLayout;
120  bool mVerilator;
121 
122  NetlistSimulatorController *mController;
123  Wizard* m_wizard;
124  };
125 
130  Q_OBJECT
131 
132  private Q_SLOTS:
133  void updateComboBoxes(const QString &selectedText);
134  void handleCellChanged(int irow, int icolumn);
135 
136  public:
138 
139  virtual bool validatePage() override;
140  private:
141  QTableWidget *mTableWidget;
142 
143  NetlistSimulatorController *mController;
144  SimulationSettings *mSettings;
145  QStringList mAllItems;
146  };
147 
151  class PageInputData : public QWizardPage {
152  Q_OBJECT
153 
154  public:
156 
157  virtual bool validatePage() override;
158  virtual void initializePage() override;
159 
160  private Q_SLOTS:
161  void handleRadioToggled(bool checked);
162  void openFileBrowser();
163  void handleFileImport();
164  void updateSubtitle();
165 
166  private:
167  NetlistSimulatorController* mController;
168  QFrame* mFrameFile;
169  QFrame* mFrameTable;
170  QLineEdit* mEditFilename;
171  QCheckBox* mDisplayHexValues;
172  QPushButton* mButFiledialog;
173  QPushButton* mButFileimport;
174  QRadioButton* mRadFile;
175  QRadioButton* mRadEditor;
176  WavedataTableEditor* mTableEditor;
177  bool mDisableToggleHandler;
178  static bool canFileImport(const QString& filename);
179  };
180 
185  {
186  Q_OBJECT
187  public Q_SLOTS:
188  void handleLog(const QString &txt) override;
189  public:
191  void readFile(QFile& ff);
192  private:
193  QTextEdit* mTextEdit;
194  };
195 
200  Q_OBJECT
201 
202  public:
204  virtual bool validatePage() override;
205  virtual int nextId() const override;
206 
207  private Q_SLOTS:
208  void handleStartClicked();
209  void handleLogfileRead();
211 
212  public Q_SLOTS:
213  void handleEngineFinished(bool success);
214 
215  private:
216  NetlistSimulatorController *mController;
217  SimulationProcessOutput* mProcessOutput;
218  QPushButton* mStart;
219  QLabel* mState;
220  QFile mLogfile;
221  QByteArray mLogText;
222  };
223 
227  class PageLoadResults : public QWizardPage {
228  Q_OBJECT
229 
230  public:
232  virtual bool validatePage() override;
233  virtual void initializePage() override;
234 
235  private Q_SLOTS:
236  void useGuiSelection();
237 
238  private:
239  NetlistSimulatorController *mController;
240  WaveWidget* mWaveWidget;
241  WaveSelectionTable* mWaveModel;
242  QSortFilterProxyModel* mProxyModel;
243  QPushButton* mButAll;
244  QPushButton* mButGui;
245  QPushButton* mButNone;
246  QTableView* mTableView;
247  };
248 
249 }
250 #endif
PageClock(NetlistSimulatorController *controller, QWidget *parent=nullptr)
Definition: wizard.cpp:152
virtual bool validatePage() override
Definition: wizard.cpp:222
virtual void initializePage() override
Definition: wizard.cpp:196
PageEngine(NetlistSimulatorController *controller, Wizard *parent=nullptr)
Definition: wizard.cpp:262
virtual bool validatePage() override
Definition: wizard.cpp:285
int nextId() const override
Definition: wizard.cpp:313
PageEngineProperties(SimulationSettings *settings, NetlistSimulatorController *controller, QWidget *parent=nullptr)
Definition: wizard.cpp:326
virtual bool validatePage() override
Definition: wizard.cpp:432
PageInputData(NetlistSimulatorController *controller, QWidget *parent=nullptr)
Definition: wizard.cpp:457
virtual bool validatePage() override
Definition: wizard.cpp:657
virtual void initializePage() override
Definition: wizard.cpp:523
PageLoadResults(NetlistSimulatorController *controller, WaveWidget *ww, QWidget *parent=nullptr)
Definition: wizard.cpp:819
virtual bool validatePage() override
Definition: wizard.cpp:884
virtual void initializePage() override
Definition: wizard.cpp:901
virtual int nextId() const override
Definition: wizard.cpp:813
PageRunSimulation(NetlistSimulatorController *controller, QWidget *parent=nullptr)
Definition: wizard.cpp:737
virtual bool validatePage() override
Definition: wizard.cpp:807
void handleEngineFinished(bool success)
Definition: wizard.cpp:798
void onSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected)
Definition: wizard.cpp:125
PageSelectGates(NetlistSimulatorController *controller, QWidget *parent=nullptr)
Definition: wizard.cpp:38
std::vector< Gate * > selectedGates() const
Definition: wizard.cpp:103
virtual bool validatePage() override
Definition: wizard.cpp:135
void handleLog(const QString &txt) override
Definition: wizard.cpp:724
void readFile(QFile &ff)
Definition: wizard.cpp:731
SimulationProcessOutput(QWidget *parent, QLayout *layout)
Definition: wizard.cpp:717
Wizard(SimulationSettings *settings, NetlistSimulatorController *controller, WaveWidget *parent)
Definition: wizard.cpp:20
int mPageInputDataId
Definition: wizard.h:39
int mPageEnginePropertiesId
Definition: wizard.h:38
Definition: defines.h:45
bool isChecked() const const
Q_OBJECTQ_OBJECT
Q_SLOTSQ_SLOTS
QObject * parent() const const