https://bugs.kde.org/show_bug.cgi?id=371800
--- Comment #4 from abraa...@gmail.com --- Comment on attachment 101866 --> https://bugs.kde.org/attachment.cgi?id=101866 patch: automatically adjust the width of the view headers >From 4ec66687e337395aaf0f00198652719e4d9a3c80 Mon Sep 17 00:00:00 2001 >From: Staffan Palmroos <spalmr...@gmail.com> >Date: Fri, 28 Oct 2016 23:37:27 +0300 >Subject: [PATCH] Give the user the option to have the structure view headers > automatically adjust their widths > >--- > .../settings/structviewdisplaysettingswidget.ui | 256 +++++++++++---------- > kasten/controllers/view/structures/structview.cpp | 26 ++- > kasten/controllers/view/structures/structview.h | 1 + > 3 files changed, 158 insertions(+), 125 deletions(-) > >diff --git >a/kasten/controllers/view/structures/settings/structviewdisplaysettingswidget.ui > >b/kasten/controllers/view/structures/settings/structviewdisplaysettingswidget.ui >index c290815..1085251 100644 >--- >a/kasten/controllers/view/structures/settings/structviewdisplaysettingswidget.ui >+++ >b/kasten/controllers/view/structures/settings/structviewdisplaysettingswidget.ui >@@ -6,135 +6,145 @@ > <rect> > <x>0</x> > <y>0</y> >- <width>411</width> >- <height>292</height> >+ <width>310</width> >+ <height>421</height> > </rect> > </property> >- <layout class="QVBoxLayout" name="verticalLayout"> >- <item> >- <layout class="QFormLayout" name="formLayout_2"> >- <property name="fieldGrowthPolicy"> >- <enum>QFormLayout::ExpandingFieldsGrow</enum> >- </property> >- <item row="0" column="0"> >- <widget class="QLabel" name="byteOrderLabel"> >+ <widget class="QWidget" name="layoutWidget"> >+ <property name="geometry"> >+ <rect> >+ <x>7</x> >+ <y>7</y> >+ <width>297</width> >+ <height>407</height> >+ </rect> >+ </property> >+ <layout class="QFormLayout" name="formLayout"> >+ <item row="0" column="0"> >+ <widget class="QLabel" name="byteOrderLabel"> >+ <property name="text"> >+ <string>Byte order:</string> >+ </property> >+ <property name="buddy"> >+ <cstring>kcfg_ByteOrder</cstring> >+ </property> >+ </widget> >+ </item> >+ <item row="0" column="1"> >+ <widget class="KComboBox" name="kcfg_ByteOrder"> >+ <property name="sizeAdjustPolicy"> >+ <enum>QComboBox::AdjustToContents</enum> >+ </property> >+ <item> > <property name="text"> >- <string>Byte order:</string> >+ <string>Big endian</string> > </property> >- <property name="buddy"> >- <cstring>kcfg_ByteOrder</cstring> >- </property> >- </widget> >- </item> >- <item row="0" column="1"> >- <widget class="KComboBox" name="kcfg_ByteOrder"> >- <property name="sizeAdjustPolicy"> >- <enum>QComboBox::AdjustToContents</enum> >- </property> >- <item> >- <property name="text"> >- <string>Big endian</string> >- </property> >- </item> >- <item> >- <property name="text"> >- <string>Little endian</string> >- </property> >- </item> >- </widget> >- </item> >- <item row="1" column="0" colspan="2"> >- <widget class="QCheckBox" name="kcfg_ShortTypeNames"> >- <property name="text"> >- <string>Use short type names</string> >- </property> >- </widget> >- </item> >- <item row="2" column="0" colspan="2"> >- <widget class="QCheckBox" name="kcfg_LocaleAwareDecimalFormatting"> >- <property name="text"> >- <string>Use locale-aware integer formatting</string> >- </property> >- </widget> >- </item> >- <item row="3" column="0"> >- <widget class="QLabel" name="unsigned_label"> >- <property name="text"> >- <string>Unsigned values:</string> >- </property> >- <property name="buddy"> >- <cstring>combo_UnsignedDisplayBase</cstring> >- </property> >- </widget> >- </item> >- <item row="3" column="1"> >- <widget class="KComboBox" name="combo_UnsignedDisplayBase"/> >- </item> >- <item row="4" column="0"> >- <widget class="QLabel" name="signed_label"> >- <property name="text"> >- <string>Signed values:</string> >- </property> >- <property name="buddy"> >- <cstring>combo_SignedDisplayBase</cstring> >- </property> >- </widget> >- </item> >- <item row="4" column="1"> >- <widget class="KComboBox" name="combo_SignedDisplayBase"/> >- </item> >- <item row="5" column="0" colspan="2"> >- <widget class="QCheckBox" name="kcfg_LocaleAwareFloatFormatting"> >- <property name="text"> >- <string>Use locale-aware floating-point formatting</string> >- </property> >- </widget> >- </item> >- <item row="6" column="0"> >- <widget class="QLabel" name="label"> >- <property name="text"> >- <string>Floating-point precision:</string> >- </property> >- <property name="buddy"> >- <cstring>kcfg_FloatPrecision</cstring> >- </property> >- </widget> >- </item> >- <item row="6" column="1"> >- <widget class="QSpinBox" name="kcfg_FloatPrecision"/> >- </item> >- <item row="7" column="0" colspan="2"> >- <widget class="QCheckBox" name="kcfg_ShowCharNumericalValue"> >+ </item> >+ <item> > <property name="text"> >- <string>Show numerical value of chars</string> >- </property> >- </widget> >- </item> >- <item row="8" column="0"> >- <widget class="QLabel" name="char_label"> >- <property name="text"> >- <string>Character value:</string> >- </property> >- <property name="buddy"> >- <cstring>combo_CharDisplayBase</cstring> >+ <string>Little endian</string> > </property> >- </widget> >- </item> >- <item row="8" column="1"> >- <widget class="KComboBox" name="combo_CharDisplayBase"/> >- </item> >- <item row="9" column="0"> >- <widget class="QSpinBox" name="kcfg_CharDisplayBase"/> >- </item> >- <item row="9" column="1"> >- <widget class="QSpinBox" name="kcfg_SignedDisplayBase"/> >- </item> >- <item row="10" column="0"> >- <widget class="QSpinBox" name="kcfg_UnsignedDisplayBase"/> >- </item> >- </layout> >- </item> >- </layout> >+ </item> >+ </widget> >+ </item> >+ <item row="1" column="0" colspan="2"> >+ <widget class="QCheckBox" name="kcfg_ShortTypeNames"> >+ <property name="text"> >+ <string>Use short type names</string> >+ </property> >+ </widget> >+ </item> >+ <item row="2" column="0" colspan="2"> >+ <widget class="QCheckBox" name="kcfg_LocaleAwareDecimalFormatting"> >+ <property name="text"> >+ <string>Use locale-aware integer formatting</string> >+ </property> >+ </widget> >+ </item> >+ <item row="3" column="0"> >+ <widget class="QLabel" name="unsigned_label"> >+ <property name="text"> >+ <string>Unsigned values:</string> >+ </property> >+ <property name="buddy"> >+ <cstring>combo_UnsignedDisplayBase</cstring> >+ </property> >+ </widget> >+ </item> >+ <item row="3" column="1"> >+ <widget class="KComboBox" name="combo_UnsignedDisplayBase"/> >+ </item> >+ <item row="4" column="0"> >+ <widget class="QLabel" name="signed_label"> >+ <property name="text"> >+ <string>Signed values:</string> >+ </property> >+ <property name="buddy"> >+ <cstring>combo_SignedDisplayBase</cstring> >+ </property> >+ </widget> >+ </item> >+ <item row="4" column="1"> >+ <widget class="KComboBox" name="combo_SignedDisplayBase"/> >+ </item> >+ <item row="5" column="0" colspan="2"> >+ <widget class="QCheckBox" name="kcfg_LocaleAwareFloatFormatting"> >+ <property name="text"> >+ <string>Use locale-aware floating-point formatting</string> >+ </property> >+ </widget> >+ </item> >+ <item row="6" column="0"> >+ <widget class="QLabel" name="label"> >+ <property name="text"> >+ <string>Floating-point precision:</string> >+ </property> >+ <property name="buddy"> >+ <cstring>kcfg_FloatPrecision</cstring> >+ </property> >+ </widget> >+ </item> >+ <item row="6" column="1"> >+ <widget class="QSpinBox" name="kcfg_FloatPrecision"/> >+ </item> >+ <item row="7" column="0" colspan="2"> >+ <widget class="QCheckBox" name="kcfg_ShowCharNumericalValue"> >+ <property name="text"> >+ <string>Show numerical value of chars</string> >+ </property> >+ </widget> >+ </item> >+ <item row="8" column="0"> >+ <widget class="QLabel" name="char_label"> >+ <property name="text"> >+ <string>Character value:</string> >+ </property> >+ <property name="buddy"> >+ <cstring>combo_CharDisplayBase</cstring> >+ </property> >+ </widget> >+ </item> >+ <item row="8" column="1"> >+ <widget class="KComboBox" name="combo_CharDisplayBase"/> >+ </item> >+ <item row="9" column="0"> >+ <widget class="QSpinBox" name="kcfg_CharDisplayBase"/> >+ </item> >+ <item row="9" column="1"> >+ <widget class="QSpinBox" name="kcfg_SignedDisplayBase"/> >+ </item> >+ <item row="10" column="0"> >+ <widget class="QSpinBox" name="kcfg_UnsignedDisplayBase"/> >+ </item> >+ <item row="11" column="0" colspan="2"> >+ <widget class="QCheckBox" name="kcfg_AutoAdjustHeaders"> >+ <property name="text"> >+ <string>Adjust header widths automatically</string> >+ </property> >+ </widget> >+ </item> >+ </layout> >+ </widget> > </widget> > <customwidgets> > <customwidget> >diff --git a/kasten/controllers/view/structures/structview.cpp >b/kasten/controllers/view/structures/structview.cpp >index df121dd..67da76a 100644 >--- a/kasten/controllers/view/structures/structview.cpp >+++ b/kasten/controllers/view/structures/structview.cpp >@@ -83,8 +83,14 @@ StructView::StructView(StructTool* tool, QWidget* parent) : > mStructTreeView->setSortingEnabled(false); > mStructTreeView->installEventFilter(this); > QHeaderView* header = mStructTreeView->header(); >- header->setSectionResizeMode(QHeaderView::Interactive); >- >+ if (Kasten::StructViewPreferences::autoAdjustHeaders()) >+ { >+ header->setSectionResizeMode(QHeaderView::ResizeToContents); >+ } >+ else >+ { >+ header->setSectionResizeMode(QHeaderView::Interactive); >+ } > baseLayout->addWidget(mStructTreeView, 10); > > // settings >@@ -166,12 +172,28 @@ void StructView::openSettingsDlg() > > //User edited the configuration - update your local copies of the > configuration data > connect(dialog, &KConfigDialog::settingsChanged, mTool, > &StructTool::setSelectedStructuresInView); >+ connect(dialog, &KConfigDialog::settingsChanged, this, >&StructView::setAutoAdjustHeaders); > > #pragma message("TODO: kconfig_compiler signals work now, use those signals > and not the generic KConfigDialog::settingsChanged") > dialog->setCurrentPage(displ); > dialog->show(); > } > >+// Change the header resize policy of the structures view if the user changed >the setting. >+void StructView::setAutoAdjustHeaders() >+{ >+ QHeaderView* header = mStructTreeView->header(); >+ if (Kasten::StructViewPreferences::autoAdjustHeaders()) >+ { >+ header->setSectionResizeMode(QHeaderView::ResizeToContents); >+ } >+ else >+ { >+ header->setSectionResizeMode(QHeaderView::Interactive); >+ } >+} >+ >+ > bool StructView::eventFilter(QObject* object, QEvent* event) > { > if (object == mStructTreeView) >diff --git a/kasten/controllers/view/structures/structview.h >b/kasten/controllers/view/structures/structview.h >index 404481e..a0bb28b 100644 >--- a/kasten/controllers/view/structures/structview.h >+++ b/kasten/controllers/view/structures/structview.h >@@ -75,6 +75,7 @@ protected Q_SLOTS: > void lockButtonToggled(); > void setLockButtonState(bool structureLocked); > void onByteArrayModelChanged(Okteta::AbstractByteArrayModel* model); >+ void setAutoAdjustHeaders(); > private: > void setLockButtonState(const QModelIndex& current); > }; >-- >2.7.3 > -- You are receiving this mail because: You are watching all bug changes.