X-Git-Url: http://git.code-monkey.de/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fsubwindows%2Fdecoder_selector%2Fsubwindow.cpp;h=19632ad17a05051b22f63e649923d98d0b34f484;hp=3a917190b6f263091aac8b2a9cd5987fe85af056;hb=b032da6260e46cd7f9ff998da21d687e7d54cf9d;hpb=644462a7d5d48bd98cc7484adef2c15a52a36f64 diff --git a/pv/subwindows/decoder_selector/subwindow.cpp b/pv/subwindows/decoder_selector/subwindow.cpp index 3a91719..19632ad 100644 --- a/pv/subwindows/decoder_selector/subwindow.cpp +++ b/pv/subwindows/decoder_selector/subwindow.cpp @@ -19,11 +19,14 @@ #include +#include #include +#include #include #include #include #include +#include #include #include "pv/session.hpp" @@ -36,6 +39,9 @@ namespace pv { namespace subwindows { namespace decoder_selector { +const QString initial_notice = QApplication::tr("Select a decoder to see its description here."); +const int min_width_margin = 75; + bool QCustomSortFilterProxyModel::filterAcceptsRow(int source_row, const QModelIndex& source_parent) const @@ -96,6 +102,7 @@ SubWindow::SubWindow(Session& session, QWidget* parent) : sort_filter_model_->setSourceModel(model_); sort_filter_model_->setFilterCaseSensitivity(Qt::CaseInsensitive); + sort_filter_model_->setFilterKeyColumn(-1); tree_view_->setModel(sort_filter_model_); tree_view_->setRootIsDecorated(true); @@ -105,13 +112,30 @@ SubWindow::SubWindow(Session& session, QWidget* parent) : // Hide the columns that hold the detailed item information tree_view_->hideColumn(2); // ID + // Ensure that all decoder tag names are fully visible by default + tree_view_->resizeColumnToContents(0); + + tree_view_->setIndentation(10); + + QScrollArea* info_label_body_container = new QScrollArea(); + info_label_body_container->setWidget(info_label_body_); + info_label_body_container->setWidgetResizable(true); + info_box_->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); QVBoxLayout* info_box_layout = new QVBoxLayout(info_box_); info_box_layout->addWidget(info_label_header_); - info_box_layout->addWidget(info_label_body_); + info_box_layout->addWidget(info_label_body_container); info_box_layout->addWidget(info_label_footer_); + info_box_layout->setAlignment(Qt::AlignTop); + Qt::TextInteractionFlags flags = Qt::TextSelectableByMouse | Qt::TextSelectableByKeyboard; + info_label_header_->setWordWrap(true); + info_label_header_->setTextInteractionFlags(flags); info_label_body_->setWordWrap(true); - info_label_body_->setText(tr("Select a decoder to see its description here.")); + info_label_body_->setTextInteractionFlags(flags); + info_label_body_->setText(initial_notice); + info_label_body_->setAlignment(Qt::AlignTop); + info_label_footer_->setWordWrap(true); + info_label_footer_->setTextInteractionFlags(flags); connect(filter, SIGNAL(textChanged(const QString&)), this, SLOT(on_filter_changed(const QString&))); @@ -137,6 +161,14 @@ QToolBar* SubWindow::create_toolbar(QWidget *parent) const return toolbar; } +int SubWindow::minimum_width() const +{ + QFontMetrics m(info_label_body_->font()); + const int label_width = m.width(initial_notice); + + return label_width + min_width_margin; +} + vector SubWindow::get_decoder_inputs(const srd_decoder* d) const { vector ret_val; @@ -182,7 +214,7 @@ void SubWindow::on_item_changed(const QModelIndex& index) const QString id = QString::fromUtf8(d->id); const QString longname = QString::fromUtf8(d->longname); const QString desc = QString::fromUtf8(d->desc); - const QString doc = QString::fromUtf8(srd_decoder_doc_get(d)); + const QString doc = QString::fromUtf8(srd_decoder_doc_get(d)).trimmed(); QString tags; for (GSList* li = (GSList*)d->tags; li; li = li->next) { @@ -192,7 +224,7 @@ void SubWindow::on_item_changed(const QModelIndex& index) tags.append(s); } - info_label_header_->setText(QString("%1 (%2)
%3") + info_label_header_->setText(QString("%1 (%2)
%3") .arg(longname, id, desc)); info_label_body_->setText(doc); info_label_footer_->setText(tr("

Tags: %1

").arg(tags));