问题标签 [undo]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
4500 浏览

c++ - 如何利用 sqlite 进行撤消/重做功能?

我正在编写一个桌面应用程序来用 C++ 进行矢量绘图,并考虑使用 sqlite 来支持我的撤消/重做功能。

有人使用 sqlite 进行撤消/重做功能吗?它对你有什么影响?

澄清:

我知道堆栈方法,我什至用这种方法实现了一个应用程序。我遇到的问题是一段时间后很难维护。

我使用 sqlite 的意思是将我的整个内存数据结构映射到一个 sqlite 数据库中,并让 sqlite 为我做差异和修订。如果我创建内存数据库,速度应该不是问题。

这就是想法,我想知道这是否可行。

0 投票
5 回答
1166 浏览

drawing - Photoshop撤消系统

这个问题可能适用于一般的绘图系统。我想知道如何在 PS 中实现撤消功能。程序是否在每次操作之前拍摄画布的快照?如果是这样,这不会导致巨大的内存需求吗?我已经研究了命令模式,但我不太明白这将如何应用于绘图。

问候,门诺

0 投票
3 回答
6826 浏览

svn - 如何撤消“svn 副本”

我不小心用'svn copy'复制主干覆盖了一个旧分支。更具体地说,对于每个版本,主干都会分支并作为标签保存,使用:

但这一次,'RELEASENR' 的值是旧的现有分支而不是新分支的值。有人对如何撤消这个错误有任何想法吗?已经谢谢了!

0 投票
2 回答
1278 浏览

tfs - 如何撤消来自非托管工作区的 tfs 更改?

我有一个永远丢失的工作空间。我从这个工作区签出了一些文件。我想解锁它们,但我不能。我试着做:

但我收到了这条信息:

工作区丢失;用户不在这台计算机上。在托管该工作区的计算机上运行 get(如果撤消了编辑,则获取所有内容)以使用在服务器上所做的更改对其进行更新。

是否存在撤消由不可用工作区签出的文件(不是每个文件)的任何方法?

0 投票
3 回答
2244 浏览

apache-flex - Flex 文本控制撤消

我无法找到任何资源来将 ctrl-z 撤消功能添加到 Flex RichTextEditor 控件(它显然与其他 Flex 文本控件共享的缺失)。我很困惑它不是原生形式,因为它是如此基本的功能,我相信甚至可以在标准浏览器文本控件中使用。

Flex 网站上的任何提及此问题的(有几个)冲突;有人说问题是“已解决”,而解决方案是“外部”(无论这意味着什么)。

有没有人可以提供任何见解?我有一个需要大量文本编辑的应用程序。Flex 通常运行良好,但正如任何人想象的那样,这种微不足道的缺陷几乎是致命的。

0 投票
1 回答
2129 浏览

objective-c - 禁用撤消创建/删除 NSManagedObject

在我的核心数据模型中,我有一个关系listItems,它链接到几个listItem实体,每个实体都有一个stringValue属性。我创建了一个控件,它本质上是一个列表NSTextFields,每个列表项一个。该控件已正确绑定listItems,并且我已对其进行了设置,以便按下回车键在当前编辑的字段下直接创建一个新字段并将焦点更改为新字段。因此,本质上,要添加一个新项目,用户按下 Return 键。

同样,如果用户结束编辑并且当前编辑的字段为空,则该字段被删除(例如,空字段仅在“编辑模式”期间出现,可以这么说)。这工作得很好。基本上,在我的listItemNSManagedObject 子类中,我执行以下操作:

我遇到的问题是每次以这种方式删除一行时,它都会向 undoManager 注册。因此,如果我编辑一行,按 Return(这会创建一个新行),然后单击离开以结束编辑,该行就会消失。但是,如果我随后撤消,则会重新出现空字段。我的目标是让 undoManager 忽略涉及空字段的删除操作。

我该怎么办?我已经尝试在几个地方使用[[[self managedObjectContext] undoManager] disableUndoRegistration]和关联enableUndoRegistration(例如-didTurnIntoFault,但我怀疑撤消注册可能在该方法之前发生)

0 投票
2 回答
1319 浏览

zsh - 无法撤消 Zsh 中的删除

我在路径/测试处运行

教程说我可以撤消更改

如果其中一个花哨的编辑器命令以您不希望的方式更改了您的命令行,您可以使用 ^_ 撤消更改,如果您可以将其从键盘中取出,或者 ^X^U,否则。

但是,我没有按 Ctrl-x Ctrl-u 或 Ctrl-xu 取回文件。我还按 Shift-6 Shift-- 或 Shift-6-- 尝试了 ^_,但未成功。

如何撤消 Zsh 中的删除?

0 投票
3 回答
2324 浏览

svn - 是否可以还原整个 SVN 存储库?

我只是对我的 SVN 存储库做了一些愚蠢的事情,我不小心将一堆东西导入了根目录而不是子文件夹。我需要很长时间才能清理......除非有一种简单的方法可以对回购进行全局恢复?帮助文件讨论了恢复工作副本,但新导入的项目没有工作副本。有没有办法撤消导入?

重复回滚或恢复整个 svn 存储库到旧版本

0 投票
1 回答
651 浏览

wpf - 撤消日志:关注正在撤消的控制

我正在为我的 WPF 数据输入屏幕编写撤消日志,它将跟踪所有控件的更改。当用户选择撤消时,我不仅要恢复最新的更改,还要将焦点放回其值正在恢复的控件中。我正在努力寻找将注意力重新集中的最佳方式。

我的 ViewModel 将是处理撤销日志的部分:ViewModel 的属性设置器将在更新 DataModel 之前捕获一些“之前”状态。一种或另一种方式,“之前”状态需要包含足够的信息,以便我能够稍后将焦点放回原处。

举例来说,假设有两个数据输入字段:地址和城市。ViewModel 对每个都有一个属性,View 对每个绑定到相应 ViewModel 属性的 TextBox 都有一个。

让我们按照用户刚刚在地址字段中键入一个值,然后单击城市字段的示例进行操作。我正在使用默认的 UpdateSourceTrigger.LostFocus 行为,因此当地址文本框失去焦点时,地址更改会被保存。到目前为止,关于如何解决这个问题,我有三种不同的想法,但我对 WPF 的了解不够多,无法知道如何使它们中的任何一个起作用。

  1. 我可以忘记 MVVM 样式的数据绑定,并挂钩编辑控件的 LostFocus 事件(或添加附加行为,或制作包装 TextBox 的自定义控件,或者......)。在 LostFocus 事件处理程序中,我可以创建一个撤消帧,其中包含对事件发送者的引用。后来,在撤消之后,我只关注我保存了其引用的控件。这可能是我在 WinForms 中所做的,但在 WPF 中我宁愿坚持使用 ViewModel 模式——我宁愿让日志逻辑存在于 ViewModel 中而不是 View 中,以确保可测试性。所以这个选项不是我的第一选择。

  2. 在我的 ViewModel 的属性设置器中,我可以捕获正在设置的 ViewModel 属性的名称(本示例中的“地址”),并将该名称存储在撤消框架中。稍后,在撤消时,我可以遍历视图中的所有控件,寻找我能找到的第一个绑定到名为 Address 的属性的控件。一旦我找到一个这样的控制,我就会把重点放在它上面。这足以满足我的需要,因为我不希望将多个控件绑定到同一个 ViewModel 属性。问题是这需要深入研究绑定表达式,这是我不知道该怎么做的事情。(它还会引入更多基于名称的后期绑定,如果我重构,可能会中断。)

  3. 当我的 ViewModel 将更改添加到撤消堆栈时,它可以要求 View 层(通过接口)创建一个知道哪个控件具有焦点的 Memento。在撤消时,日记会要求视图恢复该备忘录。这里的问题是,当我的 ViewModel 的属性被设置并添加撤消框架时,键盘焦点已经移动到 City TextBox,因此“创建纪念品”需要比“哪里”更棘手当前的键盘焦点”,我不知道如何完成这个技巧。

任何人对进行上述任何工作有任何建议,或者有可能更好的替代方法?

0 投票
2 回答
3351 浏览

vba - 在 VBA 中读取撤消历史记录

我在 Word 2003 中有一个相当简单的 VBA,将文档的字体更改为“生态字体”(长篇故事),并打开“打印”对话框。

当用户点击取消或确定时,代码会执行“撤消”以恢复更改。

问题是,有时当我按“确定”打印文档时,需要撤消两个操作(“字体更改”和“更新字段”)。我似乎无法预测何时会发生这种情况。

有没有办法读取 Word 撤消缓冲区中的最后一项?这样我就可以一直按撤消,直到字体更改完成。

编辑: 最终代码(减少):