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:
committed by
GitHub
parent
616f4971ce
commit
4d5eb39762
@@ -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()));
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -50,6 +50,7 @@ ParamGroup = (
|
||||
'ResizableColumn',
|
||||
'VisibilityIcon',
|
||||
'HideColumn',
|
||||
'HideInternalNames',
|
||||
'HideScrollBar',
|
||||
'HideHeaderView',
|
||||
'IconSize',
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"),
|
||||
|
||||
Reference in New Issue
Block a user