本文整理汇总了C++中canUndo函数的典型用法代码示例。如果您正苦于以下问题:C++ canUndo函数的具体用法?C++ canUndo怎么用?C++ canUndo使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了canUndo函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: assert
void ActionStack::undo() {
assert(canUndo());
if (!canUndo()) return;
Action* action = undo_actions.back();
action->perform(true);
tellListeners(*action, true);
// move to redo stack
undo_actions.pop_back();
redo_actions.push_back(action);
last_was_add = false;
}
开发者ID:BestRCH,项目名称:magicseteditor,代码行数:11,代码来源:action_stack.cpp
示例2: throw
void UndoStack::undo() throw (Exception)
{
if ((!canUndo()) || (mCommandActive)) // if a command is active, undo() is not allowed
return;
mCommands[mCurrentIndex-1]->undo(); // throws an exception on error
mCurrentIndex--;
// emit signals
emit undoTextChanged(getUndoText());
emit redoTextChanged(getRedoText());
emit canUndoChanged(canUndo());
emit canRedoChanged(canRedo());
emit cleanChanged(isClean());
}
开发者ID:0xB767B,项目名称:LibrePCB,代码行数:15,代码来源:undostack.cpp
示例3: getSavePath
void ShaderEditor::onGUIMenu()
{
if(ImGui::BeginMenuBar())
{
if(ImGui::BeginMenu("File"))
{
if (ImGui::MenuItem("New")) newGraph();
if (ImGui::MenuItem("Open")) load();
if (ImGui::MenuItem("Save", nullptr, false, m_path.isValid())) save(m_path.c_str());
if (ImGui::MenuItem("Save as"))
{
getSavePath();
if (m_path.isValid()) save(m_path.c_str());
}
ImGui::EndMenu();
}
if (ImGui::BeginMenu("Edit"))
{
if (ImGui::MenuItem("Undo", nullptr, false, canUndo())) undo();
if (ImGui::MenuItem("Redo", nullptr, false, canRedo())) redo();
ImGui::EndMenu();
}
if (ImGui::MenuItem("Generate", nullptr, false, m_path.isValid()))
{
generate(m_path.c_str(), ShaderType::VERTEX);
generate(m_path.c_str(), ShaderType::FRAGMENT);
generateMain(m_path.c_str());
}
ImGui::EndMenuBar();
}
}
开发者ID:Garfield-Chen,项目名称:LumixEngine,代码行数:32,代码来源:shader_editor.cpp
示例4: undo
void EditorClientEfl::undo()
{
if (canUndo()) {
RefPtr<WebCore::UndoStep> step = undoStack.takeFirst();
step->unapply();
}
}
开发者ID:Happy-Ferret,项目名称:webkit.js,代码行数:7,代码来源:EditorClientEfl.cpp
示例5: undoAction
//-----------------------------------------------------------------------------
// undoAction()
//-----------------------------------------------------------------------------
BOOL LLUndoBuffer::undoAction()
{
if (!canUndo())
{
return FALSE;
}
S32 prevAction = (mNextAction + mNumActions - 1) % mNumActions;
while(mActions[prevAction]->mClusterID == mOperationID)
{
// go ahead and decrement action index
mNextAction = prevAction;
// undo this action
mActions[mNextAction]->undo();
// we're at the first action, so we don't know if we've actually undid everything
if (mNextAction == mFirstAction)
{
mOperationID--;
return FALSE;
}
// do wrap-around of index, but avoid negative numbers for modulo operator
prevAction = (mNextAction + mNumActions - 1) % mNumActions;
}
mOperationID--;
return TRUE;
}
开发者ID:1234-,项目名称:SingularityViewer,代码行数:35,代码来源:llundo.cpp
示例6: undo
void Task::undo()
{
if (canUndo()) {
(*_currentStep)->undo();
_currentStep++;
}
}
开发者ID:williamwaterson,项目名称:protolayer,代码行数:7,代码来源:Task.cpp
示例7: canUndo
long
GNEUndoList::p_onUpdUndo(FXObject* sender, FXSelector, void*) {
bool enable = canUndo() && !hasCommandGroup();
sender->handle(this, enable ? FXSEL(SEL_COMMAND, FXWindow::ID_ENABLE) : FXSEL(SEL_COMMAND, FXWindow::ID_DISABLE), 0);
FXString caption = undoName();
if (hasCommandGroup()) {
caption = ("Cannot Undo in the middle of " + myCommandGroups.top()->getDescription()).c_str();
} else if (!canUndo()) {
caption = "Undo";
}
// only set caption on menu item
if (dynamic_cast<FXMenuCommand*>(sender)) {
sender->handle(this, FXSEL(SEL_COMMAND, FXMenuCaption::ID_SETSTRINGVALUE), (void*)&caption);
}
return 1;
}
开发者ID:fieryzig,项目名称:sumo,代码行数:16,代码来源:GNEUndoList.cpp
示例8: getUndoText
QString UndoStack::getUndoText() const noexcept
{
if (canUndo())
return QString(tr("Undo: %1")).arg(mCommands[mCurrentIndex-1]->getText());
else
return tr("Undo");
}
开发者ID:0xB767B,项目名称:LibrePCB,代码行数:7,代码来源:undostack.cpp
示例9: indexChanged
void KUndo2QStack::setIndex(int idx, bool clean)
{
bool was_clean = m_index == m_clean_index;
if (m_lastMergedIndex <= idx) {
m_lastMergedSetCount = idx - m_lastMergedIndex;
} else {
m_lastMergedSetCount = 1;
m_lastMergedIndex = idx-1;
}
if(idx == 0){
m_lastMergedSetCount = 0;
m_lastMergedIndex = 0;
}
if (idx != m_index) {
m_index = idx;
emit indexChanged(m_index);
emit canUndoChanged(canUndo());
emit undoTextChanged(undoText());
emit canRedoChanged(canRedo());
emit redoTextChanged(redoText());
}
if (clean)
m_clean_index = m_index;
bool is_clean = m_index == m_clean_index;
if (is_clean != was_clean)
emit cleanChanged(is_clean);
}
开发者ID:KDE,项目名称:calligra,代码行数:30,代码来源:kundo2stack.cpp
示例10: undo
void Timeline::undo()
{
if (canUndo()) {
(*_currentTask)->undo();
_currentTask++;
}
}
开发者ID:williamwaterson,项目名称:protolayer,代码行数:7,代码来源:Timeline.cpp
示例11: undoName
String ActionStack::undoName() const {
if (canUndo()) {
return _(" ") + capitalize(undo_actions.back()->getName(true));
} else {
return wxEmptyString;
}
}
开发者ID:BestRCH,项目名称:magicseteditor,代码行数:7,代码来源:action_stack.cpp
示例12: countChanged
void GameMovesRegistry::clear()
{
m_performedCmnds.clear();
m_undoneCmnds.clear();
emit countChanged(count());
emit canRedoChanged(canRedo());
emit canUndoChanged(canUndo());
}
开发者ID:yudjin87,项目名称:qml_chess,代码行数:9,代码来源:GameMovesRegistry.cpp
示例13: canRedoChanged
void GameMovesRegistry::failExecution()
{
m_performedCmnds.clear();
m_undoneCmnds.clear();
emit canRedoChanged(canRedo());
emit canUndoChanged(canUndo());
emit executionFailed();
}
开发者ID:yudjin87,项目名称:qml_chess,代码行数:9,代码来源:GameMovesRegistry.cpp
示例14: canUndo
void KDocumentTextBuffer::updateUndoRedoActions()
{
emit canUndo(dynamic_cast<QInfinity::AdoptedSession*>(m_session)->canUndo(
*dynamic_cast<QInfinity::AdoptedUser*>(m_user.data()))
);
emit canRedo(dynamic_cast<QInfinity::AdoptedSession*>(m_session)->canRedo(
*dynamic_cast<QInfinity::AdoptedUser*>(m_user.data()))
);
}
开发者ID:KDE,项目名称:kte-collaborative,代码行数:9,代码来源:document.cpp
示例15: undo
void EditorClient::undo()
{
if (canUndo()) {
RefPtr<WebCore::EditCommand> command(*(--undoStack.end()));
undoStack.remove(--undoStack.end());
// unapply will call us back to push this command onto the redo stack.
command->unapply();
}
}
开发者ID:sysrqb,项目名称:chromium-src,代码行数:9,代码来源:EditorClientGtk.cpp
示例16: undo
void UndoStack::undo()
{
if (canUndo()) {
UndoStepStack::iterator back = --m_undoStack.end();
RefPtr<UndoStep> step(back->get());
m_undoStack.remove(back);
step->unapply();
// unapply will call us back to push this command onto the redo stack.
}
}
开发者ID:domenic,项目名称:mojo,代码行数:10,代码来源:UndoStack.cpp
示例17:
CommandAdd::~CommandAdd() {
if (m_node_struct) {
if (canUndo()) {
m_node_struct->m_graphic_node = nullptr;
m_node_struct->m_node = nullptr;
}
delete m_node_struct;
}
}
开发者ID:ubiratans,项目名称:siga-qt,代码行数:10,代码来源:command_add.cpp
示例18: undo
void EditorClientImpl::undo()
{
if (canUndo()) {
EditCommandStack::iterator back = --m_undoStack.end();
RefPtr<EditCommand> command(*back);
m_undoStack.remove(back);
command->unapply();
// unapply will call us back to push this command onto the redo stack.
}
}
开发者ID:dankurka,项目名称:webkit_titanium,代码行数:10,代码来源:EditorClientImpl.cpp
示例19: undo
void AbstractUndoableEdit::undo(void)
{
if(canUndo())
{
_HasBeenDone = false;
}
else
{
throw CannotUndoException();
}
}
开发者ID:ahuballah,项目名称:OpenSGToolbox,代码行数:11,代码来源:OSGAbstractUndoableEdit.cpp
示例20: canUndo
bool Recorder::redo()
{
bool couldUndo = canUndo();
bool couldRedo = canRedo();
if(canRedo())
{
actions_.at(nextUndo_ + 1)->redo(model_);
++nextUndo_;
if(couldUndo != canUndo())
{
emit undoChanged(canUndo());
}
if(couldRedo != canRedo())
{
emit redoChanged(canRedo());
}
return true;
}
return false;
}
开发者ID:james-allan-lloyd,项目名称:chess-demo,代码行数:20,代码来源:recorder.cpp
注:本文中的canUndo函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论