本文整理汇总了C++中KnobChoicePtr::isActiveEntryPresentInEntries方法的典型用法代码示例。如果您正苦于以下问题:C++ KnobChoicePtr::isActiveEntryPresentInEntries方法的具体用法?C++ KnobChoicePtr::isActiveEntryPresentInEntries怎么用?C++ KnobChoicePtr::isActiveEntryPresentInEntries使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类KnobChoicePtr
的用法示例。
在下文中一共展示了KnobChoicePtr::isActiveEntryPresentInEntries方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
void
ViewerNodePrivate::refreshInputChoices(bool resetChoiceIfNotFound)
{
// Refresh the A and B input choices
KnobChoicePtr aInputKnob = aInputNodeChoiceKnob.lock();
KnobChoicePtr bInputKnob = bInputNodeChoiceKnob.lock();
ViewerCompositingOperatorEnum operation = (ViewerCompositingOperatorEnum)blendingModeChoiceKnob.lock()->getValue();
bInputKnob->setEnabled(operation != eViewerCompositingOperatorNone);
std::vector<ChoiceOption> entries;
entries.push_back(ChoiceOption("-", "", ""));
int nInputs = _publicInterface->getMaxInputCount();
for (int i = 0; i < nInputs; ++i) {
NodePtr inputNode = _publicInterface->getNode()->getRealInput(i);
if (!inputNode) {
continue;
}
std::string optionID;
{
std::stringstream ss;
ss << i;
optionID = ss.str();
}
entries.push_back(ChoiceOption(optionID, inputNode->getLabel(), ""));
}
ChoiceOption currentAChoice = aInputKnob->getActiveEntry();
ChoiceOption currentBChoice = bInputKnob->getActiveEntry();
aInputKnob->populateChoices(entries);
bInputKnob->populateChoices(entries);
if (resetChoiceIfNotFound) {
if (currentAChoice.id == "-" || !aInputKnob->isActiveEntryPresentInEntries(ViewIdx(0))) {
aInputKnob->setValue(entries.size() > 1 ? 1 : 0);
}
if (currentBChoice.id == "-" || !bInputKnob->isActiveEntryPresentInEntries(ViewIdx(0))) {
bInputKnob->setValue(entries.size() > 1 ? 1 : 0);
}
}
if (uiContext) {
if ( (operation == eViewerCompositingOperatorNone) || !bInputKnob->isEnabled() || bInputKnob->getActiveEntry().id.empty() ) {
uiContext->setInfoBarVisible(1, false);
} else if (operation != eViewerCompositingOperatorNone) {
uiContext->setInfoBarVisible(1, true);
}
}
} // refreshInputChoices
示例2: tr
void
KnobGuiChoice::updateGUI(int /*dimension*/)
{
///we don't use setCurrentIndex because the signal emitted by combobox will call onCurrentIndexChanged and
///change the internal value of the knob again...
///The slot connected to onCurrentIndexChanged is reserved to catch user interaction with the combobox.
///This function is called in response to an internal change.
KnobChoicePtr knob = _knob.lock();
std::string activeEntry = knob->getActiveEntryText_mt_safe();
if ( !activeEntry.empty() ) {
bool activeIndexPresent = knob->isActiveEntryPresentInEntries();
if (!activeIndexPresent) {
QString error = tr("The value set to this parameter no longer exist in the menu. Right click and press Refresh Menu to update the menu and then pick a new value.");
setWarningValue( KnobGui::eKnobWarningChoiceMenuOutOfDate, GuiUtils::convertFromPlainText(error, Qt::WhiteSpaceNormal) );
} else {
setWarningValue( KnobGui::eKnobWarningChoiceMenuOutOfDate, QString() );
}
}
if ( _comboBox->isCascading() || activeEntry.empty() ) {
_comboBox->setCurrentIndex_no_emit( knob->getValue() );
} else {
_comboBox->setCurrentText( QString::fromUtf8( activeEntry.c_str() ) );
}
}
示例3: QIcon
void
KnobGuiChoice::onEntriesPopulated()
{
KnobChoicePtr knob = _knob.lock();
_comboBox->clear();
std::vector<std::string> entries = knob->getEntries_mt_safe();
const std::vector<std::string> help = knob->getEntriesHelp_mt_safe();
std::string activeEntry = knob->getActiveEntryText_mt_safe();
for (U32 i = 0; i < entries.size(); ++i) {
std::string helpStr;
if ( !help.empty() && !help[i].empty() ) {
helpStr = help[i];
}
_comboBox->addItem( QString::fromUtf8( entries[i].c_str() ), QIcon(), QKeySequence(), QString::fromUtf8( helpStr.c_str() ) );
}
// the "New" menu is only added to known parameters (e.g. the choice of output channels)
if ( knob->getHostCanAddOptions() &&
( ( knob->getName() == kNatronOfxParamOutputChannels) || ( knob->getName() == kOutputChannelsKnobName) ) ) {
_comboBox->addItemNew();
}
///we don't use setCurrentIndex because the signal emitted by combobox will call onCurrentIndexChanged and
///we don't want that to happen because the index actually didn't change.
if ( _comboBox->isCascading() || activeEntry.empty() ) {
_comboBox->setCurrentIndex_no_emit( knob->getValue() );
} else {
_comboBox->setCurrentText_no_emit( QString::fromUtf8( activeEntry.c_str() ) );
}
if ( !activeEntry.empty() ) {
bool activeIndexPresent = knob->isActiveEntryPresentInEntries();
if (!activeIndexPresent) {
QString error = tr("The value set to this parameter no longer exist in the menu. Right click and press Refresh Menu to update the menu and then pick a new value.");
setWarningValue( KnobGui::eKnobWarningChoiceMenuOutOfDate, GuiUtils::convertFromPlainText(error, Qt::WhiteSpaceNormal) );
} else {
setWarningValue( KnobGui::eKnobWarningChoiceMenuOutOfDate, QString() );
}
}
}
示例4: tr
void
KnobGuiChoice::updateGUI()
{
///we don't use setCurrentIndex because the signal emitted by combobox will call onCurrentIndexChanged and
///change the internal value of the knob again...
///The slot connected to onCurrentIndexChanged is reserved to catch user interaction with the combobox.
///This function is called in response to an internal change.
KnobChoicePtr knob = _knob.lock();
if (!knob) {
return;
}
ChoiceOption activeEntry = knob->getCurrentEntry();
QString activeEntryLabel;
if (!activeEntry.label.empty()) {
activeEntryLabel = QString::fromUtf8(activeEntry.label.c_str());
} else {
activeEntryLabel = QString::fromUtf8(activeEntry.id.c_str());
}
if ( !activeEntry.id.empty() ) {
bool activeIndexPresent = knob->isActiveEntryPresentInEntries(getView());
if (!activeIndexPresent) {
QString error = tr("The value %1 no longer exists in the menu").arg(activeEntryLabel);
getKnobGui()->setWarningValue( KnobGui::eKnobWarningChoiceMenuOutOfDate, NATRON_NAMESPACE::convertFromPlainText(error, NATRON_NAMESPACE::WhiteSpaceNormal) );
} else {
getKnobGui()->setWarningValue( KnobGui::eKnobWarningChoiceMenuOutOfDate, QString() );
}
}
if ( _comboBox->isCascading() || activeEntry.id.empty() ) {
_comboBox->setCurrentIndex( knob->getValue(), false );
} else {
ensureUnknownChocieIsNotInternalPlaneID(activeEntryLabel);
_comboBox->setCurrentIndexFromLabel( activeEntryLabel, false /*emitSignal*/ );
}
}