Displaying internal names in the tree view (#14237)

* Displaying internal names in the tree view

* Change "Hide extra column" to "Hide Description"

---------

Co-authored-by: Kuzma30 <kuzemkoa@gmail.com>
This commit is contained in:
Kuzemko Alexsandr
2024-06-10 19:31:04 +03:00
committed by GitHub
parent 616f4971ce
commit 4d5eb39762
7 changed files with 163 additions and 19 deletions

View File

@@ -106,43 +106,50 @@ DlgSettingsUI::DlgSettingsUI(QWidget* parent)
HideColumn->setEntryName("HideColumn");
HideColumn->setParamGrpPath("TreeView");
// Auto generated code (Tools/params_utils.py:433)
HideInternalNames = new Gui::PrefCheckBox(this);
layoutTreeview->addWidget(HideInternalNames, 5, 0);
HideInternalNames->setChecked(Gui::TreeParams::defaultHideInternalNames());
HideInternalNames->setEntryName("HideInternalNames");
HideInternalNames->setParamGrpPath("TreeView");
// Auto generated code (Tools/params_utils.py:433)
HideScrollBar = new Gui::PrefCheckBox(this);
layoutTreeview->addWidget(HideScrollBar, 5, 0);
layoutTreeview->addWidget(HideScrollBar, 6, 0);
HideScrollBar->setChecked(Gui::TreeParams::defaultHideScrollBar());
HideScrollBar->setEntryName("HideScrollBar");
HideScrollBar->setParamGrpPath("TreeView");
// Auto generated code (Tools/params_utils.py:433)
HideHeaderView = new Gui::PrefCheckBox(this);
layoutTreeview->addWidget(HideHeaderView, 6, 0);
layoutTreeview->addWidget(HideHeaderView, 7, 0);
HideHeaderView->setChecked(Gui::TreeParams::defaultHideHeaderView());
HideHeaderView->setEntryName("HideHeaderView");
HideHeaderView->setParamGrpPath("TreeView");
// Auto generated code (Tools/params_utils.py:433)
labelIconSize = new QLabel(this);
layoutTreeview->addWidget(labelIconSize, 7, 0);
layoutTreeview->addWidget(labelIconSize, 8, 0);
IconSize = new Gui::PrefSpinBox(this);
layoutTreeview->addWidget(IconSize, 7, 1);
layoutTreeview->addWidget(IconSize, 8, 1);
IconSize->setValue(Gui::TreeParams::defaultIconSize());
IconSize->setEntryName("IconSize");
IconSize->setParamGrpPath("TreeView");
// Auto generated code (Tools/params_utils.py:433)
labelFontSize = new QLabel(this);
layoutTreeview->addWidget(labelFontSize, 8, 0);
layoutTreeview->addWidget(labelFontSize, 9, 0);
FontSize = new Gui::PrefSpinBox(this);
layoutTreeview->addWidget(FontSize, 8, 1);
layoutTreeview->addWidget(FontSize, 9, 1);
FontSize->setValue(Gui::TreeParams::defaultFontSize());
FontSize->setEntryName("FontSize");
FontSize->setParamGrpPath("TreeView");
// Auto generated code (Tools/params_utils.py:433)
labelItemSpacing = new QLabel(this);
layoutTreeview->addWidget(labelItemSpacing, 9, 0);
layoutTreeview->addWidget(labelItemSpacing, 10, 0);
ItemSpacing = new Gui::PrefSpinBox(this);
layoutTreeview->addWidget(ItemSpacing, 9, 1);
layoutTreeview->addWidget(ItemSpacing, 10, 1);
ItemSpacing->setValue(Gui::TreeParams::defaultItemSpacing());
ItemSpacing->setEntryName("ItemSpacing");
ItemSpacing->setParamGrpPath("TreeView");
@@ -451,6 +458,7 @@ void DlgSettingsUI::saveSettings()
ResizableColumn->onSave();
VisibilityIcon->onSave();
HideColumn->onSave();
HideInternalNames->onSave();
HideScrollBar->onSave();
HideHeaderView->onSave();
IconSize->onSave();
@@ -492,6 +500,7 @@ void DlgSettingsUI::loadSettings()
ResizableColumn->onRestore();
VisibilityIcon->onRestore();
HideColumn->onRestore();
HideInternalNames->onRestore();
HideScrollBar->onRestore();
HideHeaderView->onRestore();
IconSize->onRestore();
@@ -540,7 +549,9 @@ void DlgSettingsUI::retranslateUi()
VisibilityIcon->setToolTip(QApplication::translate("TreeParams", Gui::TreeParams::docVisibilityIcon()));
VisibilityIcon->setText(QObject::tr("Show visibility icon"));
HideColumn->setToolTip(QApplication::translate("TreeParams", Gui::TreeParams::docHideColumn()));
HideColumn->setText(QObject::tr("Hide extra column"));
HideColumn->setText(QObject::tr("Hide Description"));
HideInternalNames->setToolTip(QApplication::translate("TreeParams", Gui::TreeParams::docHideInternalNames()));
HideInternalNames->setText(QObject::tr("Hide Internal Names"));
HideScrollBar->setToolTip(QApplication::translate("TreeParams", Gui::TreeParams::docHideScrollBar()));
HideScrollBar->setText(QObject::tr("Hide scroll bar"));
HideHeaderView->setToolTip(QApplication::translate("TreeParams", Gui::TreeParams::docHideHeaderView()));

View File

@@ -80,6 +80,7 @@ private:
Gui::PrefCheckBox *ResizableColumn = nullptr;
Gui::PrefCheckBox *VisibilityIcon = nullptr;
Gui::PrefCheckBox *HideColumn = nullptr;
Gui::PrefCheckBox *HideInternalNames = nullptr;
Gui::PrefCheckBox *HideScrollBar = nullptr;
Gui::PrefCheckBox *HideHeaderView = nullptr;
QLabel *labelIconSize = nullptr;

View File

@@ -50,6 +50,7 @@ ParamGroup = (
'ResizableColumn',
'VisibilityIcon',
'HideColumn',
'HideInternalNames',
'HideScrollBar',
'HideHeaderView',
'IconSize',

View File

@@ -217,6 +217,7 @@ public:
bool itemHidden;
std::string label;
std::string label2;
std::string internalName;
using Connection = boost::signals2::scoped_connection;
@@ -245,6 +246,7 @@ public:
itemHidden = !viewObject->showInTree();
label = viewObject->getObject()->Label.getValue();
label2 = viewObject->getObject()->Label2.getValue();
internalName = viewObject->getObject()->getNameInDocument();
}
void insertItem(DocumentObjectItem* item)
@@ -478,8 +480,9 @@ void TreeWidgetItemDelegate::paint(QPainter *painter,
// If the second column is not shown, we'll trim the color background when
// rendering as transparent overlay.
bool trimBG = TreeParams::getHideColumn();
bool trimBG = TreeParams::getHideColumn() || TreeParams::getHideInternalNames();
if (index.column() == 0) {
if (tree->testAttribute(Qt::WA_NoSystemBackground)
&& (trimBG || (opt.backgroundBrush.style() == Qt::NoBrush
@@ -494,7 +497,6 @@ void TreeWidgetItemDelegate::paint(QPainter *painter,
}
}
}
style->drawControl(QStyle::CE_ItemViewItem, &opt, painter, artificial);
}
@@ -589,7 +591,7 @@ TreeWidget::TreeWidget(const char* name, QWidget* parent)
this->setDragEnabled(true);
this->setAcceptDrops(true);
this->setDragDropMode(QTreeWidget::InternalMove);
this->setColumnCount(2);
this->setColumnCount(3);
this->setItemDelegate(new TreeWidgetItemDelegate(this));
this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
@@ -671,10 +673,12 @@ TreeWidget::TreeWidget(const char* name, QWidget* parent)
setupResizableColumn(this);
this->header()->setStretchLastSection(true);
QObject::connect(this->header(), &QHeaderView::sectionResized, [](int idx, int, int newSize) {
if (idx)
if (idx == 1)
TreeParams::setColumnSize2(newSize);
else
TreeParams::setColumnSize1(newSize);
else if (idx == 2)
TreeParams::setColumnSize3(newSize);
else
TreeParams::setColumnSize1(newSize);
});
// Add the first main label
@@ -712,7 +716,8 @@ TreeWidget::TreeWidget(const char* name, QWidget* parent)
documentPartialPixmap = std::make_unique<QPixmap>(icon.pixmap(documentPixmap->size(), QIcon::Disabled));
}
setColumnHidden(1, TreeParams::getHideColumn());
header()->setVisible(!TreeParams::getHideColumn());
setColumnHidden(2, TreeParams::getHideInternalNames());
header()->setVisible(!TreeParams::getHideColumn() || !TreeParams::getHideInternalNames());
}
TreeWidget::~TreeWidget()
@@ -1104,6 +1109,7 @@ void TreeWidget::contextMenuEvent(QContextMenuEvent* e)
contextMenu.addMenu(&settingsMenu);
QAction* action = new QAction(tr("Show description column"), this);
QAction* internalNameAction = new QAction(tr("Show internal name"), this);
action->setStatusTip(tr("Show an extra tree view column for item description. The item's description can be set by pressing F2 (or your OS's edit button) or by editing the 'label2' property."));
action->setCheckable(true);
@@ -1111,11 +1117,26 @@ void TreeWidget::contextMenuEvent(QContextMenuEvent* e)
action->setChecked(!hGrp->GetBool("HideColumn", true));
settingsMenu.addAction(action);
QObject::connect(action, &QAction::triggered, this, [this, action, hGrp]() {
QObject::connect(action, &QAction::triggered, this, [this, action, internalNameAction, hGrp]() {
bool show = action->isChecked();
hGrp->SetBool("HideColumn", !show);
setColumnHidden(1, !show);
header()->setVisible(show);
header()->setVisible(action->isChecked()||internalNameAction->isChecked());
});
internalNameAction->setStatusTip(tr("Show an internal name column for items."));
internalNameAction->setCheckable(true);
internalNameAction->setChecked(!hGrp->GetBool("HideInternalNames", true));
settingsMenu.addAction(internalNameAction);
QObject::connect(internalNameAction, &QAction::triggered, this, [this, action, internalNameAction, hGrp]() {
bool show = internalNameAction->isChecked();
hGrp->SetBool("HideInternalNames", !show);
setColumnHidden(2, !show);
header()->setVisible(action->isChecked()||internalNameAction->isChecked());
});
if (contextMenu.actions().count() > 0) {
@@ -1429,12 +1450,15 @@ void TreeWidget::setupResizableColumn(TreeWidget *tree) {
if(!tree || tree==inst) {
inst->header()->setSectionResizeMode(0, mode);
inst->header()->setSectionResizeMode(1, mode);
inst->header()->setSectionResizeMode(2, mode);
if (TreeParams::getResizableColumn()) {
QSignalBlocker blocker(inst);
if (TreeParams::getColumnSize1() > 0)
inst->header()->resizeSection(0, TreeParams::getColumnSize1());
if (TreeParams::getColumnSize2() > 0)
inst->header()->resizeSection(1, TreeParams::getColumnSize2());
if (TreeParams::getColumnSize3() > 0)
inst->header()->resizeSection(2, TreeParams::getColumnSize3());
}
}
}
@@ -3237,6 +3261,7 @@ void TreeWidget::setupText()
{
this->headerItem()->setText(0, tr("Labels & Attributes"));
this->headerItem()->setText(1, tr("Description"));
this->headerItem()->setText(2, tr("Internal name"));
this->showHiddenAction->setText(tr("Show items hidden in tree view"));
this->showHiddenAction->setStatusTip(tr("Show items that are marked as 'hidden' in the tree view"));
@@ -3832,6 +3857,7 @@ bool DocumentItem::createNewItem(const Gui::ViewProviderDocumentObject& obj,
item->setText(0, QString::fromUtf8(data->label.c_str()));
if (!data->label2.empty())
item->setText(1, QString::fromUtf8(data->label2.c_str()));
item->setText(2, QString::fromUtf8(data->internalName.c_str()));
if (!obj.showInTree() && !showHidden())
item->setHidden(true);
item->testStatus(true);

View File

@@ -72,11 +72,13 @@ public:
unsigned long ItemBackground;
long ItemBackgroundPadding;
bool HideColumn;
bool HideInternalNames;
bool HideScrollBar;
bool HideHeaderView;
bool ResizableColumn;
long ColumnSize1;
long ColumnSize2;
long ColumnSize3;
bool TreeToolTipIcon;
bool VisibilityIcon;
@@ -145,6 +147,8 @@ public:
funcs["ItemBackgroundPadding"] = &TreeParamsP::updateItemBackgroundPadding;
HideColumn = handle->GetBool("HideColumn", true);
funcs["HideColumn"] = &TreeParamsP::updateHideColumn;
HideInternalNames = handle->GetBool("HideInternalNames", true);
funcs["HideInternalNames"] = &TreeParamsP::updateHideInternalNames;
HideScrollBar = handle->GetBool("HideScrollBar", true);
funcs["HideScrollBar"] = &TreeParamsP::updateHideScrollBar;
HideHeaderView = handle->GetBool("HideHeaderView", true);
@@ -155,6 +159,8 @@ public:
funcs["ColumnSize1"] = &TreeParamsP::updateColumnSize1;
ColumnSize2 = handle->GetInt("ColumnSize2", 0);
funcs["ColumnSize2"] = &TreeParamsP::updateColumnSize2;
ColumnSize3 = handle->GetInt("ColumnSize3", 0);
funcs["ColumnSize3"] = &TreeParamsP::updateColumnSize3;
TreeToolTipIcon = handle->GetBool("TreeToolTipIcon", false);
funcs["TreeToolTipIcon"] = &TreeParamsP::updateTreeToolTipIcon;
VisibilityIcon = handle->GetBool("VisibilityIcon", false);
@@ -365,6 +371,14 @@ public:
TreeParams::onHideColumnChanged();
}
}
// Auto generated code (Tools/params_utils.py:296)
static void updateHideInternalNames(TreeParamsP *self) {
auto v = self->handle->GetBool("HideInternalNames", true);
if (self->HideInternalNames != v) {
self->HideInternalNames = v;
TreeParams::onHideInternalNamesChanged();
}
}
// Auto generated code (Tools/params_utils.py:288)
static void updateHideScrollBar(TreeParamsP *self) {
self->HideScrollBar = self->handle->GetBool("HideScrollBar", true);
@@ -390,6 +404,10 @@ public:
self->ColumnSize2 = self->handle->GetInt("ColumnSize2", 0);
}
// Auto generated code (Tools/params_utils.py:288)
static void updateColumnSize3(TreeParamsP *self) {
self->ColumnSize3 = self->handle->GetInt("ColumnSize3", 0);
}
// Auto generated code (Tools/params_utils.py:288)
static void updateTreeToolTipIcon(TreeParamsP *self) {
self->TreeToolTipIcon = self->handle->GetBool("TreeToolTipIcon", false);
}
@@ -1229,6 +1247,34 @@ void TreeParams::removeHideColumn() {
instance()->handle->RemoveBool("HideColumn");
}
// Auto generated code (Tools/params_utils.py:350)
const char *TreeParams::docHideInternalNames() {
return QT_TRANSLATE_NOOP("TreeParams",
"Hide extra tree view column - Internal Names.");
}
// Auto generated code (Tools/params_utils.py:358)
const bool & TreeParams::getHideInternalNames() {
return instance()->HideInternalNames;
}
// Auto generated code (Tools/params_utils.py:366)
const bool & TreeParams::defaultHideInternalNames() {
const static bool def = true;
return def;
}
// Auto generated code (Tools/params_utils.py:375)
void TreeParams::setHideInternalNames(const bool &v) {
instance()->handle->SetBool("HideInternalNames",v);
instance()->HideInternalNames = v;
}
// Auto generated code (Tools/params_utils.py:384)
void TreeParams::removeHideInternalNames() {
instance()->handle->RemoveBool("HideInternalNames");
}
// Auto generated code (Tools/params_utils.py:350)
const char *TreeParams::docHideScrollBar() {
return QT_TRANSLATE_NOOP("TreeParams",
@@ -1367,6 +1413,33 @@ void TreeParams::removeColumnSize2() {
instance()->handle->RemoveInt("ColumnSize2");
}
// Auto generated code (Tools/params_utils.py:350)
const char *TreeParams::docColumnSize3() {
return "";
}
// Auto generated code (Tools/params_utils.py:358)
const long & TreeParams::getColumnSize3() {
return instance()->ColumnSize3;
}
// Auto generated code (Tools/params_utils.py:366)
const long & TreeParams::defaultColumnSize3() {
const static long def = 0;
return def;
}
// Auto generated code (Tools/params_utils.py:375)
void TreeParams::setColumnSize3(const long &v) {
instance()->handle->SetInt("ColumnSize3",v);
instance()->ColumnSize3 = v;
}
// Auto generated code (Tools/params_utils.py:384)
void TreeParams::removeColumnSize3() {
instance()->handle->RemoveInt("ColumnSize3");
}
// Auto generated code (Tools/params_utils.py:350)
const char *TreeParams::docTreeToolTipIcon() {
return "";
@@ -1523,6 +1596,12 @@ void TreeParams::onHideColumnChanged()
tree->setColumnHidden(1, TreeParams::getHideColumn());
}
void TreeParams::onHideInternalNamesChanged()
{
for(auto tree : TreeWidget::Instances)
tree->setColumnHidden(2, TreeParams::getHideInternalNames());
}
void TreeParams::onVisibilityIconChanged()
{
TreeWidget::updateVisibilityIcons();

View File

@@ -391,6 +391,19 @@ public:
static void onHideColumnChanged();
//@}
// Auto generated code (Tools/params_utils.py:138)
//@{
/// Accessor for parameter HideInternalNames
///
/// Hide extra tree view column - Internal Names.
static const bool & getHideInternalNames();
static const bool & defaultHideInternalNames();
static void removeHideInternalNames();
static void setHideInternalNames(const bool &v);
static const char *docHideInternalNames();
static void onHideInternalNamesChanged();
//@}
// Auto generated code (Tools/params_utils.py:138)
//@{
/// Accessor for parameter HideScrollBar
@@ -448,6 +461,16 @@ public:
static const char *docColumnSize2();
//@}
// Auto generated code (Tools/params_utils.py:138)
//@{
/// Accessor for parameter ColumnSize3
static const long & getColumnSize3();
static const long & defaultColumnSize3();
static void removeColumnSize3();
static void setColumnSize3(const long &v);
static const char *docColumnSize3();
//@}
// Auto generated code (Tools/params_utils.py:138)
//@{
/// Accessor for parameter TreeToolTipIcon

View File

@@ -69,8 +69,10 @@ Params = [
doc = "Tree view item background. Only effective in overlay."),
ParamInt('ItemBackgroundPadding', 0, on_change=True, title="Item background padding", proxy=ParamSpinBox(0, 100, 1),
doc = "Tree view item background padding."),
ParamBool('HideColumn', True, on_change=True, title="Hide extra column",
ParamBool('HideColumn', True, on_change=True, title="Hide Description",
doc = "Hide extra tree view column for item description."),
ParamBool('HideInternalNames', True, on_change=True, title="Hide Internal Names",
doc = "Hide extra tree view column - Internal Names."),
ParamBool('HideScrollBar', True, title="Hide scroll bar",
doc = "Hide tree view scroll bar in dock overlay."),
ParamBool('HideHeaderView', True, title="Hide header",
@@ -79,6 +81,7 @@ Params = [
doc = "Allow tree view columns to be manually resized."),
ParamInt('ColumnSize1', 0),
ParamInt('ColumnSize2', 0),
ParamInt('ColumnSize3', 0),
ParamBool('TreeToolTipIcon', False, title='Show icon in tool tip'),
ParamBool('VisibilityIcon', False, on_change=True, title='Show visibility icon',
doc = "If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled"),