HAL  v4.5.0-83-g30c8f0afc
The Hardware Analyzer - a comprehensive reverse engineering and manipulation framework for gate-level netlists.
wave_selection_dialog.h
Go to the documentation of this file.
1 // MIT License
2 //
3 // Copyright (c) 2019 Ruhr University Bochum, Chair for Embedded Security. All Rights reserved.
4 // Copyright (c) 2019 Marc Fyrbiak, Sebastian Wallat, Max Hoffmann ("ORIGINAL AUTHORS"). All rights reserved.
5 // Copyright (c) 2021 Max Planck Institute for Security and Privacy. All Rights reserved.
6 // Copyright (c) 2021 Jörn Langheinrich, Julian Speith, Nils Albartus, René Walendy, Simon Klix ("ORIGINAL AUTHORS"). All Rights reserved.
7 //
8 // Permission is hereby granted, free of charge, to any person obtaining a copy
9 // of this software and associated documentation files (the "Software"), to deal
10 // in the Software without restriction, including without limitation the rights
11 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12 // copies of the Software, and to permit persons to whom the Software is
13 // furnished to do so, subject to the following conditions:
14 //
15 // The above copyright notice and this permission notice shall be included in all
16 // copies or substantial portions of the Software.
17 //
18 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24 // SOFTWARE.
25 
26 #pragma once
27 
28 #include <QDialog>
29 #include <QMap>
30 #include <QAbstractTableModel>
31 #include <QTableView>
32 #include <QStyledItemDelegate>
33 #include <QPushButton>
35 
37 
38 namespace hal {
43  {
44  u32 mId;
45  QString mName;
46  u64 mSize;
47  public:
48  WaveSelectionEntry(u32 id_ = 0, const QString& nam = QString(), u64 n=0) : mId(id_), mName(nam), mSize(n) {;}
49  u32 id() const { return mId; }
50  QString name() const { return mName; }
51  u64 size() const { return mSize; }
52  bool operator==(const WaveSelectionEntry& other) const { return mName == other.mName; }
53  bool operator<(const WaveSelectionEntry& other) const { return mName < other.mName; }
54  };
55 
56  uint qHash(const WaveSelectionEntry& wse);
57 
62  {
63  Q_OBJECT
64  QList<QPair<WaveSelectionEntry,int> > mWaveSelectionEntries;
65  public:
66  WaveSelectionTable(QObject* parent = nullptr);
67  int rowCount(const QModelIndex &parent = QModelIndex()) const override;
68  int columnCount(const QModelIndex &parent = QModelIndex()) const override;
69  QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
70  QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
71  Qt::ItemFlags flags(const QModelIndex &index) const override;
72  void setEntryMap(const QMap<WaveSelectionEntry,int>& entries);
74  };
75 
76 
81  {
82  Q_OBJECT
83  WaveSelectionTable* mWaveModel;
84  QSortFilterProxyModel* mProxyModel;
85  QTableView* mTableView;
86  QPushButton* mButAll;
87  QPushButton* mButNone;
88  QPushButton* mButSel;
89 
90  private Q_SLOTS:
91  void handleCurrentGuiSelection();
92 
93  public:
96  };
97 
98 }
QMap< WaveSelectionEntry, int > selectedWaves() const
WaveSelectionDialog(const QMap< WaveSelectionEntry, int > &wseMap, QWidget *parent=nullptr)
QString name() const
WaveSelectionEntry(u32 id_=0, const QString &nam=QString(), u64 n=0)
bool operator<(const WaveSelectionEntry &other) const
bool operator==(const WaveSelectionEntry &other) const
u64 size() const
u32 id() const
WaveSelectionTable(QObject *parent=nullptr)
int rowCount(const QModelIndex &parent=QModelIndex()) const override
QMap< WaveSelectionEntry, int > entryMap(const QList< QModelIndex > &indexes) const
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const override
QVariant headerData(int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const override
Qt::ItemFlags flags(const QModelIndex &index) const override
void setEntryMap(const QMap< WaveSelectionEntry, int > &entries)
int columnCount(const QModelIndex &parent=QModelIndex()) const override
uint64_t u64
Definition: defines.h:42
uint32_t u32
Definition: defines.h:41
Definition: defines.h:45
uint qHash(const LaneIndex &ri)
virtual QModelIndex index(int row, int column, const QModelIndex &parent) const const override
Q_OBJECTQ_OBJECT
Q_SLOTSQ_SLOTS
QObject * parent() const const
DisplayRole
typedef ItemFlags
Orientation