Skip to content

Commit dced23b

Browse files
committed
Extended selection instead of multi selection when adding waves to waveform viewer
1 parent e1c0382 commit dced23b

3 files changed

Lines changed: 31 additions & 5 deletions

File tree

plugins/simulator/waveform_viewer/include/waveform_viewer/wizard.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,12 +200,16 @@ namespace hal {
200200
virtual bool validatePage() override;
201201
virtual void initializePage() override;
202202

203+
private Q_SLOTS:
204+
void useGuiSelection();
205+
203206
private:
204207
NetlistSimulatorController *mController;
205208
WaveWidget* mWaveWidget;
206209
WaveSelectionTable* mWaveModel;
207210
QSortFilterProxyModel* mProxyModel;
208211
QPushButton* mButAll;
212+
QPushButton* mButGui;
209213
QPushButton* mButNone;
210214
QTableView* mTableView;
211215
};

plugins/simulator/waveform_viewer/src/wave_selection_dialog.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ namespace hal {
3232
mTableView->setModel(mProxyModel);
3333
mTableView->setSortingEnabled(true);
3434
mTableView->setSelectionBehavior(QAbstractItemView::SelectRows);
35-
mTableView->setSelectionMode(QAbstractItemView::MultiSelection);
35+
mTableView->setSelectionMode(QAbstractItemView::ExtendedSelection);
3636
QHeaderView* hv = mTableView->horizontalHeader();
3737
hv->setSectionResizeMode(0,QHeaderView::Interactive);
3838
hv->setSectionResizeMode(1,QHeaderView::Stretch);

plugins/simulator/waveform_viewer/src/wizard.cpp

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ namespace hal {
163163
mSpinPeriod = new QSpinBox(this);
164164
mSpinPeriod->setMinimum(0);
165165
mSpinPeriod->setMaximum(1000000);
166-
mSpinPeriod->setValue(10);
166+
mSpinPeriod->setValue(1000);
167167
layout->addWidget(mSpinPeriod,1,1);
168168

169169
layout->addWidget(new QLabel("Start value:",this),2,0);
@@ -175,8 +175,8 @@ namespace hal {
175175
layout->addWidget(new QLabel("Duration:",this),3,0);
176176
mSpinDuration = new QSpinBox(this);
177177
mSpinDuration->setMinimum(0);
178-
mSpinDuration->setMaximum(1000000);
179-
mSpinDuration->setValue(2000);
178+
mSpinDuration->setMaximum(10000000);
179+
mSpinDuration->setValue(100000);
180180
layout->addWidget(mSpinDuration,3,1);
181181

182182
mDontUseClock = new QCheckBox("Do not use clock generator in simulation",this);
@@ -754,6 +754,8 @@ namespace hal {
754754

755755
mButAll = new QPushButton("Wave data for all nets", this);
756756
layout->addWidget(mButAll,0,0);
757+
mButGui = new QPushButton("Only nets selected in GUI", this);
758+
layout->addWidget(mButGui,0,1);
757759
mButNone = new QPushButton("Clear selection", this);
758760
layout->addWidget(mButNone,0,2);
759761

@@ -764,7 +766,7 @@ namespace hal {
764766
mTableView->setModel(mProxyModel);
765767
mTableView->setSortingEnabled(true);
766768
mTableView->setSelectionBehavior(QAbstractItemView::SelectRows);
767-
mTableView->setSelectionMode(QAbstractItemView::MultiSelection);
769+
mTableView->setSelectionMode(QAbstractItemView::ExtendedSelection);
768770
QHeaderView* hv = mTableView->horizontalHeader();
769771
hv->setSectionResizeMode(0,QHeaderView::Interactive);
770772
hv->setSectionResizeMode(1,QHeaderView::Stretch);
@@ -773,11 +775,31 @@ namespace hal {
773775
mTableView->setColumnWidth(1,256);
774776
mTableView->setColumnWidth(2,36);
775777
connect(mButAll,&QPushButton::clicked,mTableView,&QTableView::selectAll);
778+
connect(mButGui,&QPushButton::clicked,this,&PageLoadResults::useGuiSelection);
776779
connect(mButNone,&QPushButton::clicked,mTableView,&QTableView::clearSelection);
777780

778781
layout->addWidget(mTableView,1,0,1,3);
779782
}
780783

784+
void PageLoadResults::useGuiSelection()
785+
{
786+
QSet<u32> guiNetSel = gSelectionRelay->selectedNets();
787+
788+
const QAbstractItemModel* modl = mTableView->model(); // proxy model
789+
int nrows = modl->rowCount();
790+
mTableView->clearSelection();
791+
792+
bool ok;
793+
794+
for (int irow = 0; irow<nrows; irow++)
795+
{
796+
u32 gid = modl->data(modl->index(irow,0)).toUInt(&ok);
797+
if (!ok) continue;
798+
if (guiNetSel.contains(gid))
799+
mTableView->selectRow(irow);
800+
}
801+
}
802+
781803
bool PageLoadResults::validatePage()
782804
{
783805
QList<QModelIndex> selIndexList;

0 commit comments

Comments
 (0)