#include <pv/widgets/exportmenu.hpp>
#include <pv/widgets/importmenu.hpp>
#ifdef ENABLE_DECODE
-#include <pv/widgets/decodermenu.hpp>
#include <pv/data/decodesignal.hpp>
#endif
action_restore_setup_(new QAction(this)),
action_save_setup_(new QAction(this)),
action_connect_(new QAction(this)),
+ new_view_button_(new QToolButton()),
open_button_(new QToolButton()),
save_button_(new QToolButton()),
device_selector_(parent, session.device_manager(), action_connect_),
updating_sample_count_(false),
sample_count_supported_(false)
#ifdef ENABLE_DECODE
- , add_decoder_button_(new QToolButton()),
- menu_decoders_add_(new pv::widgets::DecoderMenu(this, true))
+ , add_decoder_button_(new QToolButton())
#endif
{
setObjectName(QString::fromUtf8("MainBar"));
connect(action_connect_, SIGNAL(triggered(bool)),
this, SLOT(on_actionConnect_triggered()));
+ // New view button
+ QMenu *menu_new_view = new QMenu();
+ connect(menu_new_view, SIGNAL(triggered(QAction*)),
+ this, SLOT(on_actionNewView_triggered(QAction*)));
+
+ for (int i = 0; i < views::ViewTypeCount; i++) {
+ QAction *const action = menu_new_view->addAction(tr(views::ViewTypeNames[i]));
+ action->setData(QVariant::fromValue(i));
+ }
+
+ new_view_button_->setMenu(menu_new_view);
+ new_view_button_->setDefaultAction(action_new_view_);
+ new_view_button_->setPopupMode(QToolButton::MenuButtonPopup);
+
// Open button
vector<QAction*> open_actions;
open_actions.push_back(action_open_);
// Setup the decoder button
#ifdef ENABLE_DECODE
- menu_decoders_add_->setTitle(tr("&Add"));
- connect(menu_decoders_add_, SIGNAL(decoder_selected(srd_decoder*)),
- this, SLOT(add_decoder(srd_decoder*)));
-
add_decoder_button_->setIcon(QIcon(":/icons/add-decoder.svg"));
add_decoder_button_->setPopupMode(QToolButton::InstantPopup);
- add_decoder_button_->setMenu(menu_decoders_add_);
- add_decoder_button_->setToolTip(tr("Add low-level, non-stacked protocol decoder"));
+ add_decoder_button_->setToolTip(tr("Add protocol decoder"));
+ add_decoder_button_->setShortcut(QKeySequence(Qt::Key_D));
+
+ connect(add_decoder_button_, SIGNAL(clicked()),
+ this, SLOT(on_add_decoder_clicked()));
#endif
connect(&sample_count_, SIGNAL(value_changed()),
msg.exec();
}
-void MainBar::add_decoder(srd_decoder *decoder)
-{
-#ifdef ENABLE_DECODE
- assert(decoder);
- shared_ptr<data::DecodeSignal> signal = session_.add_decode_signal();
- if (signal)
- signal->stack_decoder(decoder);
-#else
- (void)decoder;
-#endif
-}
-
void MainBar::export_file(shared_ptr<OutputFormat> format, bool selection_only)
{
using pv::dialogs::StoreProgress;
options = dlg.options();
}
- session_.load_file(file_name, format, options);
+ session_.load_file(file_name, "", format, options);
const QString abs_path = QFileInfo(file_name).absolutePath();
settings.setValue(SettingOpenDirectory, abs_path);
commit_sample_rate();
}
-void MainBar::on_actionNewView_triggered()
+void MainBar::on_actionNewView_triggered(QAction* action)
{
- new_view(&session_);
+ if (action)
+ new_view(&session_, action->data().toInt());
+ else
+ // When the icon of the button is clicked, we create a trace view
+ new_view(&session_, views::ViewTypeTrace);
}
void MainBar::on_actionOpen_triggered()
update_device_list();
}
+void MainBar::on_add_decoder_clicked()
+{
+ show_decoder_selector(&session_);
+}
+
void MainBar::add_toolbar_widgets()
{
- addAction(action_new_view_);
+ addWidget(new_view_button_);
addSeparator();
addWidget(open_button_);
addWidget(save_button_);