本文整理汇总了C++中KnobGuiPtr::pushUndoCommand方法的典型用法代码示例。如果您正苦于以下问题:C++ KnobGuiPtr::pushUndoCommand方法的具体用法?C++ KnobGuiPtr::pushUndoCommand怎么用?C++ KnobGuiPtr::pushUndoCommand使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类KnobGuiPtr
的用法示例。
在下文中一共展示了KnobGuiPtr::pushUndoCommand方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: getKnobGui
void
KnobGuiChoice::onCurrentIndexChanged(int i)
{
KnobGuiPtr knobUI = getKnobGui();
knobUI->setWarningValue( KnobGui::eKnobWarningChoiceMenuOutOfDate, QString() );
KnobChoicePtr knob = _knob.lock();
if (!knob) {
return;
}
knobUI->pushUndoCommand( new KnobUndoCommand<int>(knob, knob->getValue(DimIdx(0), getView()), i, DimIdx(0), getView()));
}
示例2: dialog
void
KnobGuiColor::showColorDialog()
{
QColorDialog dialog( _colorLabel->parentWidget() );
dialog.setOption(QColorDialog::DontUseNativeDialog);
KnobColorPtr knob = _knob.lock();
if (!knob) {
return;
}
const int nDims = knob->getNDimensions();
ViewIdx view = getView();
double curR = knob->getValue(DimIdx(0), view, false /*clampToMinmax*/);
_lastColor.resize(nDims);
_lastColor[0] = curR;
double curG = curR;
double curB = curR;
double curA = 1.;
if (nDims > 1) {
curG = knob->getValue(DimIdx(1), view, false /*clampToMinmax*/);
_lastColor[1] = curG;
curB = knob->getValue(DimIdx(2), view, false /*clampToMinmax*/);
_lastColor[2] = curB;
}
if (nDims > 3) {
dialog.setOption(QColorDialog::ShowAlphaChannel);
curA = knob->getValue(DimIdx(3), view, false /*clampToMinmax*/);
_lastColor[3] = curA;
}
convertFromInternalToUIColorspace(&curR, &curG, &curB);
QColor curColor;
curColor.setRgbF( Image::clamp<qreal>(curR, 0., 1.),
Image::clamp<qreal>(curG, 0., 1.),
Image::clamp<qreal>(curB, 0., 1.),
Image::clamp<qreal>(curA, 0., 1.) );
dialog.setCurrentColor(curColor);
QObject::connect( &dialog, SIGNAL(currentColorChanged(QColor)), this, SLOT(onDialogCurrentColorChanged(QColor)) );
if ( !dialog.exec() ) {
knob->setValueAcrossDimensions(_lastColor, DimIdx(0), view, eValueChangedReasonUserEdited);
} else {
QColor userColor = dialog.currentColor();
std::vector<double> color(nDims);
color[0] = userColor.redF();
convertFromUIToInternalColorspace(&color[0]);
if (nDims > 1) {
color[1] = userColor.greenF();
convertFromUIToInternalColorspace(&color[1]);
}
if (nDims > 2) {
color[2] = userColor.blueF();
convertFromUIToInternalColorspace(&color[2]);
}
if (nDims > 3) {
color[3] = userColor.alphaF();
}
for (int i = 0; i < 3; ++i) {
SpinBox* sb = 0;
getSpinBox(DimIdx(i), &sb);
if (sb) {
sb->setValue(color[i]);
}
}
std::vector<double> oldColor(nDims);
for (int i = 0; i < nDims; ++i) {
oldColor[i] = _lastColor[i];
}
KnobGuiPtr knobUI = getKnobGui();
knobUI->pushUndoCommand( new KnobUndoCommand<double>(knob, oldColor, color, getView()) );
}
KnobGuiPtr knobUI = getKnobGui();
if ( knobUI->getGui() ) {
knobUI->getGui()->setDraftRenderEnabled(false);
}
} // showColorDialog