Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update decoded data table on each new annotation #731

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions DSView/pv/data/decoderstack.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -818,6 +818,7 @@ void DecoderStack::annotation_callback(srd_proto_data *pdata, void *self)
// Add the annotation
if (!(*row_iter).second->push_annotation(a))
d->_no_memory = true;
d->new_annotation();
}

void DecoderStack::frame_ended()
Expand Down
1 change: 1 addition & 0 deletions DSView/pv/data/decoderstack.h
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,7 @@ class DecoderStack : public QObject, public SignalData
signals:
void new_decode_data();
void decode_done();
void new_annotation();

private:
std::list<decode::Decoder*> _stack;
Expand Down
27 changes: 22 additions & 5 deletions DSView/pv/dock/protocoldock.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,9 @@ ProtocolDock::ProtocolDock(QWidget *parent, view::View &view, SigSession *sessio
_bot_set_button->setFlat(true);
_bot_save_button = new QPushButton(bot_panel);
_bot_save_button->setFlat(true);
_auto_scroll_button = new QPushButton(bot_panel);
_auto_scroll_button->setFlat(true);
_auto_scroll_button->setCheckable(true);
_dn_nav_button = new QPushButton(bot_panel);
_dn_nav_button->setFlat(true);
_bot_title_label = new QLabel(bot_panel);
Expand All @@ -149,6 +152,7 @@ ProtocolDock::ProtocolDock(QWidget *parent, view::View &view, SigSession *sessio
bot_title_layout->addWidget(_bot_set_button);
bot_title_layout->addWidget(_bot_save_button);
bot_title_layout->addWidget(_bot_title_label, 1);
bot_title_layout->addWidget(_auto_scroll_button);
bot_title_layout->addWidget(_dn_nav_button);

_pre_button = new QPushButton(bot_panel);
Expand Down Expand Up @@ -206,6 +210,7 @@ ProtocolDock::ProtocolDock(QWidget *parent, view::View &view, SigSession *sessio

retranslateUi();

connect(_auto_scroll_button, SIGNAL(clicked()),this, SLOT(auto_scroll()));
connect(_dn_nav_button, SIGNAL(clicked()),this, SLOT(nav_table_view()));
connect(_bot_save_button, SIGNAL(clicked()),this, SLOT(export_table_view()));
connect(_bot_set_button, SIGNAL(clicked()),this, SLOT(set_model()));
Expand Down Expand Up @@ -260,6 +265,7 @@ void ProtocolDock::reStyle()
_del_all_button->setIcon(QIcon(iconPath+"/del.svg"));
_bot_set_button->setIcon(QIcon(iconPath+"/gear.svg"));
_bot_save_button->setIcon(QIcon(iconPath+"/save.svg"));
_auto_scroll_button->setIcon(QIcon(iconPath+"/loop.svg"));
_dn_nav_button->setIcon(QIcon(iconPath+"/nav.svg"));
_pre_button->setIcon(QIcon(iconPath+"/pre.svg"));
_nxt_button->setIcon(QIcon(iconPath+"/next.svg"));
Expand Down Expand Up @@ -417,7 +423,10 @@ bool ProtocolDock::add_protocol_by_id(QString id, bool silent, std::list<pv::dat
// progress connection
const auto &decode_sigs = _session->get_decode_signals();
protocol_updated();
connect(decode_sigs.back(), SIGNAL(decoded_progress(int)), this, SLOT(decoded_progress(int)));
connect(decode_sigs.back(), SIGNAL(decoded_progress()), this, SLOT(decoded_progress()));

const auto _decoder_stack = _session->get_decoder_model()->getDecoderStack();
connect(_decoder_stack, SIGNAL(new_annotation()), this, SLOT(update_model()));

return true;
}
Expand Down Expand Up @@ -451,7 +460,7 @@ void ProtocolDock::del_all_protocol()
}
}

void ProtocolDock::decoded_progress(int progress)
void ProtocolDock::decoded_progress()
{
const auto &decode_sigs = _session->get_decode_signals();
unsigned int index = 0;
Expand All @@ -477,10 +486,8 @@ void ProtocolDock::decoded_progress(int progress)
index++;
}

if (progress == 0 || progress % 10 == 1){
update_model();
}
}

void ProtocolDock::set_model()
{
Expand Down Expand Up @@ -522,6 +529,8 @@ void ProtocolDock::update_model()
_model_proxy.setSourceModel(decoder_model);
search_done();
resize_table_view(decoder_model);

auto_scroll();
}

void ProtocolDock::resize_table_view(data::DecoderModel* decoder_model)
Expand Down Expand Up @@ -620,6 +629,14 @@ void ProtocolDock::export_table_view()
protocolexp_dlg->exec();
}

void ProtocolDock::auto_scroll()
{
if (_auto_scroll_button->isChecked()) {
_table_view->scrollToBottom();
_table_view->clearSelection();
}
}

void ProtocolDock::nav_table_view()
{
uint64_t row_index = 0;
Expand Down Expand Up @@ -1017,7 +1034,7 @@ bool ProtocolDock::protocol_sort_callback(const DecoderInfoItem *o1, const Decod

void ProtocolDock::reset_view()
{
decoded_progress(0);
decoded_progress();
update();
}

Expand Down
4 changes: 3 additions & 1 deletion DSView/pv/dock/protocoldock.h
Original file line number Diff line number Diff line change
Expand Up @@ -128,10 +128,11 @@ public slots:
private slots:
void on_add_protocol();
void on_del_all_protocol();
void decoded_progress(int progress);
void decoded_progress();
void set_model();
void export_table_view();
void nav_table_view();
void auto_scroll();
void item_clicked(const QModelIndex &index);
void column_resize(int index, int old_size, int new_size);
void search_pre();
Expand Down Expand Up @@ -164,6 +165,7 @@ private slots:

QPushButton *_bot_set_button;
QPushButton *_bot_save_button;
QPushButton *_auto_scroll_button;
QPushButton *_dn_nav_button;
QPushButton *_ann_search_button;
std::vector<DecoderInfoItem*> _decoderInfoList;
Expand Down
2 changes: 1 addition & 1 deletion DSView/pv/view/decodetrace.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -547,7 +547,7 @@ void DecodeTrace::draw_unshown_row(QPainter &p, int y, int h, int left,

void DecodeTrace::on_new_decode_data()
{
decoded_progress(_decoder_stack->get_progress());
decoded_progress();

if (_view && _view->session().is_stopped_status())
_view->data_updated();
Expand Down
2 changes: 1 addition & 1 deletion DSView/pv/view/decodetrace.h
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ class DecodeTrace : public Trace


signals:
void decoded_progress(int progress);
void decoded_progress();

private slots:
void on_new_decode_data();
Expand Down