void ezQtTypeWidget::UpdatePropertyMetaState() { ezPropertyMetaState* pMeta = ezPropertyMetaState::GetSingleton(); ezMap<ezString, ezPropertyUiState> PropertyStates; pMeta->GetPropertyState(m_Items, PropertyStates); for (auto it = m_PropertyWidgets.GetIterator(); it.IsValid(); ++it) { auto itData = PropertyStates.Find(it.Key()); const bool bReadOnly = (it.Value().m_pWidget->GetProperty()->GetFlags().IsSet(ezPropertyFlags::ReadOnly)) || (it.Value().m_pWidget->GetProperty()->GetAttributeByType<ezReadOnlyAttribute>() != nullptr); ezPropertyUiState::Visibility state = ezPropertyUiState::Default; bool bIsDefaultValue = true; if (itData.IsValid()) { state = itData.Value().m_Visibility; bIsDefaultValue = itData.Value().m_bIsDefaultValue; } if (it.Value().m_pLabel) { it.Value().m_pLabel->setVisible(state != ezPropertyUiState::Invisible); it.Value().m_pLabel->setEnabled(!bReadOnly && state != ezPropertyUiState::Disabled); it.Value().m_pLabel->SetIsDefault(bIsDefaultValue); if (itData.IsValid() && !itData.Value().m_sNewLabelText.IsEmpty()) { const char* szLabelText = itData.Value().m_sNewLabelText; it.Value().m_pLabel->setText(QString::fromUtf8(ezTranslate(szLabelText))); it.Value().m_pLabel->setToolTip(QString::fromUtf8(ezTranslateTooltip(szLabelText))); } else { bool temp = ezTranslatorLogMissing::s_bActive; ezTranslatorLogMissing::s_bActive = false; // unless there is a specific override, we want to show the exact property name // also we don't want to force people to add translations for each and every property name it.Value().m_pLabel->setText(QString::fromUtf8(ezTranslate(it.Value().m_sOriginalLabelText.GetData()))); // though do try to get a tooltip for the property // this will not log an error message, if the string is not translated it.Value().m_pLabel->setToolTip(QString::fromUtf8(ezTranslateTooltip(it.Value().m_sOriginalLabelText.GetData()))); ezTranslatorLogMissing::s_bActive = temp; } } it.Value().m_pWidget->setVisible(state != ezPropertyUiState::Invisible); it.Value().m_pWidget->setEnabled(!bReadOnly && state != ezPropertyUiState::Disabled); it.Value().m_pWidget->SetIsDefault(bIsDefaultValue); } }
ezQtShortcutEditorDlg::ezQtShortcutEditorDlg(QWidget* parent) : QDialog(parent) { setupUi(this); EZ_VERIFY(connect(Shortcuts, SIGNAL(itemSelectionChanged()), this, SLOT(SlotSelectionChanged())) != nullptr, "signal/slot connection failed"); m_iSelectedAction = -1; KeyEditor->setEnabled(false); ezMap<ezString, ezMap<ezString, ezInt32>> SortedItems; { auto itActions = ezActionManager::GetActionIterator(); while (itActions.IsValid()) { if (itActions.Value()->m_Type == ezActionType::Action) { SortedItems[itActions.Value()->m_sCategoryPath][itActions.Value()->m_sActionName] = m_ActionDescs.GetCount(); m_ActionDescs.PushBack(itActions.Value()); } itActions.Next(); } } { ezQtScopedBlockSignals bs(Shortcuts); ezQtScopedUpdatesDisabled ud(Shortcuts); Shortcuts->setAlternatingRowColors(true); Shortcuts->setEditTriggers(QAbstractItemView::EditTrigger::NoEditTriggers); Shortcuts->setExpandsOnDoubleClick(true); ezStringBuilder sTemp; for (auto it = SortedItems.GetIterator(); it.IsValid(); ++it) { auto pParent = new QTreeWidgetItem(); pParent->setData(0, Qt::DisplayRole, it.Key().GetData()); Shortcuts->addTopLevelItem(pParent); pParent->setExpanded(true); pParent->setFirstColumnSpanned(true); pParent->setFlags(Qt::ItemFlag::ItemIsEnabled); QFont font = pParent->font(0); font.setBold(true); pParent->setFont(0, font); for (auto it2 : it.Value()) { const auto& item = m_ActionDescs[it2.Value()]; auto pItem = new QTreeWidgetItem(pParent); /// \todo Instead of removing &, replace it by underlined text (requires formatted text output) sTemp = ezTranslate(item->m_sActionName); sTemp.ReplaceAll("&", ""); pItem->setData(0, Qt::UserRole, it2.Value()); pItem->setData(0, Qt::DisplayRole, item->m_sActionName.GetData()); pItem->setData(1, Qt::DisplayRole, sTemp.GetData()); pItem->setData(2, Qt::DisplayRole, item->m_sShortcut.GetData()); pItem->setData(3, Qt::DisplayRole, ezTranslateTooltip(item->m_sActionName)); if (item->m_sShortcut == item->m_sDefaultShortcut) pItem->setBackground(2, QBrush()); else pItem->setBackgroundColor(2, Qt::darkYellow); sTemp.Set("Default: ", item->m_sDefaultShortcut.IsEmpty() ? "<none>" : item->m_sDefaultShortcut); pItem->setToolTip(2, QString::fromUtf8(sTemp.GetData())); } } Shortcuts->resizeColumnToContents(0); Shortcuts->resizeColumnToContents(2); } ButtonAssign->setEnabled(false); ButtonRemove->setEnabled(false); ButtonReset->setEnabled(false); }