]> sigrok.org Git - pulseview.git/blobdiff - pv/subwindows/decoder_selector/subwindow.cpp
DecoderSelector: Make window as wide as necessary when opening
[pulseview.git] / pv / subwindows / decoder_selector / subwindow.cpp
index 675e135cefad3f682e4609f71cc1f8eadcd55d60..0172a43d9a4951b97a322ca46bee7c397e3706e1 100644 (file)
@@ -19,7 +19,9 @@
 
 #include <algorithm>
 
 
 #include <algorithm>
 
+#include <QApplication>
 #include <QDebug>
 #include <QDebug>
+#include <QFontMetrics>
 #include <QInputDialog>
 #include <QLabel>
 #include <QLineEdit>
 #include <QInputDialog>
 #include <QLabel>
 #include <QLineEdit>
@@ -37,6 +39,9 @@ namespace pv {
 namespace subwindows {
 namespace decoder_selector {
 
 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
 
 bool QCustomSortFilterProxyModel::filterAcceptsRow(int source_row,
        const QModelIndex& source_parent) const
@@ -126,7 +131,7 @@ SubWindow::SubWindow(Session& session, QWidget* parent) :
        info_label_header_->setTextInteractionFlags(flags);
        info_label_body_->setWordWrap(true);
        info_label_body_->setTextInteractionFlags(flags);
        info_label_header_->setTextInteractionFlags(flags);
        info_label_body_->setWordWrap(true);
        info_label_body_->setTextInteractionFlags(flags);
-       info_label_body_->setText(tr("Select a decoder to see its description here."));
+       info_label_body_->setText(initial_notice);
        info_label_footer_->setWordWrap(true);
        info_label_footer_->setTextInteractionFlags(flags);
 
        info_label_footer_->setWordWrap(true);
        info_label_footer_->setTextInteractionFlags(flags);
 
@@ -154,6 +159,14 @@ QToolBar* SubWindow::create_toolbar(QWidget *parent) const
        return toolbar;
 }
 
        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<const char*> SubWindow::get_decoder_inputs(const srd_decoder* d) const
 {
        vector<const char*> ret_val;
 vector<const char*> SubWindow::get_decoder_inputs(const srd_decoder* d) const
 {
        vector<const char*> ret_val;