问题标签 [undo-redo]

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 投票
1 回答
1049 浏览

ruby-on-rails-3 - Paper_trail 与 Accept_nested_attributes_for

我有一个 Rails 应用程序,其中包含文章,用户可以将链接和评论添加为嵌套属性。

我在 paper_trail https://github.com/airblade/paper_trail/文档中看到该 gem 未涵盖此内容。我将如何设置撤消功能,以便在用户单击撤消时恢复/更新嵌套属性或 has_many 关联?

0 投票
4 回答
221 浏览

language-agnostic - 保存应该清除撤消/重做堆栈吗?

当用户在应用程序中保存更改时,是否应该清除撤消/重做堆栈?能够在保存前撤消到某个状态会不会很不正常?

0 投票
4 回答
2785 浏览

java - 在 Java 中为状态更改实现撤消

我开始实现命令模式,希望能找到一个有用的解决方案来解决我提供撤消操作的问题。现在我面临一个问题:

在涉及操作时实现撤消相当容易:当我将 5 添加到一个数字时,我会减去 5。当我将一个对象添加到列表中时,我将其删除,等等。但是,如果我有一个完整的状态而不是列表之类的东西怎么办?

一个例子:我为一个类中的一个线程的信息建模:

某些信息不会改变,例如 id。waitCount如上所述,撤消很容易,只需减去即可。但是priorityorstate呢?目前尚不清楚如何撤消这些信息。

我想出的唯一想法:初始化命令对象时,保留其对象中的旧状态:通过将相关数据传递给构造函数:

ThreadInfo还是让一个状态和优先级列表成为当前的第一个元素会更好吗?

0 投票
1 回答
4693 浏览

objective-c - 核心数据:如何在两个 NSManagedObjectContext 之间合并插入/更新/删除,同时将合并保持为可撤消的步骤?

我有一个基于文档的核心数据应用程序(在 Mac OS X 10.5 及更高版本上运行),我试图NSManagedObjectContext在主线程上使用两个 's。我想将次要上下文中所做的更改合并到我的主要(主要)上下文中。此外,我希望从辅助上下文中合并的更改是可撤消的,并导致文档被标记为“脏”。我想我的问题类似于“撤消在主线程之外执行的核心数据插入”但是,ATM,我没有使用不同的线程。

我一直在观察NSManagedObjectContextDidSaveNotification(调用时从第二个上下文发送-[self.secondaryContext save:])是这样的:

-mocDidSave:观察者调用的方法中,我尝试在主要上下文上使用-[NSManagedObjectContext mergeChangesFromContextDidSaveNotification:]将次要上下文中的更改合并到主要上下文中:

但是,虽然插入的对象很容易出现在我的数组控制器中,但文档没有标记为脏,并且isInserted新添加的托管对象的属性没有设置为 YES。插入(到主要上下文中)也是不可撤消的。

对任何插入的对象进行重新故障至少会将文档标记为脏,但插入仍然不可撤消:

Wrt -mocDidSave:,我通过自定义实现获得了更好的结果:

这会导致我的数组控制器得到更新,文档被标记为脏,并且插入和删除是不可撤销的。但是,我仍然遇到无法撤消的更新问题。我是否应该手动循环遍历所有 updatedObjects 并用于-[NSManagedObject changedValues]重新应用主上下文中的更改?

当然,这种自定义实现会在主上下文中从辅助上下文中复制大量工作。是否有任何其他/更好的方法可以在两个上下文之间进行合并,同时将合并保持为可撤消的步骤?

0 投票
1 回答
465 浏览

swing - 如何将上下文菜单和撤消/重做功能添加到 scala swing textarea

使用 scala.swing 创建新的 TextArea 时,没有右键单击上下文菜单,也没有使用 Ctrl + z 的撤消功能。Ctrl + [acv] 顺便说一句效果很好。

如何添加这些基本的文本编辑功能?

我在 Scala 2.9 上。

提前致谢。

0 投票
1 回答
188 浏览

c# - 如何仅添加 10 个项目

我有撤销管理器。我只需要在列表视图中查看 10 个条目。已经沸腾的大脑怎么办呢。

这段代码被添加到视图列表的所有记录中,但我只需要最后 10 条。

重要的是- 未使用 linq

更新:

例子:

我只需要 10 个。如果启动 undo4,那么您需要在最后一个或最多 10 个中显示所有内容

0 投票
3 回答
2271 浏览

iphone - 在 Paint Application 中撤消绘图

我正在使用 OpenGl 框架制作一个绘画应用程序,但我被困在 UNDO/REDO 选项中。我实现的代码是这样的:

这段代码效率不高,而且有很多错误。看看撤消前后的图像。

之前:http: //imageshack.us/photo/my-images/577/screenshot20110714at121.png/

之后:http: //imageshack.us/photo/my-images/200/screenshot20110714at121.png/

所以我想在每次用户的触摸结束时将图像保存在缓冲区中并在 UNDO 上调用上一个图像。任何人都可以帮助我如何将图像存储在缓冲区中并在 UNDO 上检索回来吗?我试图找到它的示例代码但找不到..

谢谢..

0 投票
0 回答
462 浏览

wpf - 在 WPF 文本框中使用正确的插入符号移动自定义撤消/重做

我已经实现了一个自定义撤消/重做堆栈,我试图让它与 WPF 文本框一起工作。

我已经关闭了内置的撤消机制,并在 Ctrl+Z 上连接了我的自定义撤消。一切正常,接受 TextBox 中的插入符号总是在每次撤消/重做时移动到索引 0。问题是如何解决这个问题?

我尝试在 TextBox 上有一个自定义行为,它侦听 TextChanged 并本地化文本字符串中的最后一次更改。但这只有在您开始连续多次输入同一个字母时才有效。我的方法失效了。

我理想中想要的是某种只对 TextBox.Text 属性进行实际更改的行为。就像现在一样,每次撤消都会完全更新它,即使它只是被删除的最后一个输入的字母。这当然不足为奇,因为它在我的 PresentationModel 上侦听 Text-property,它在 Undo 上触发 PropertyChanged。

但是,如果有一些更详细的方法可以准确地告诉属性值发生了什么变化,那就是只有一个或几个字母在字符串值中插入/删除。然后 TextBox 可以只改变它而不必刷新它的整个文本值。有没有这样的方式告诉 TextBox 已经准备好,或者是否可以制作一个以这种方式运行的自定义 TextBox?这样就可以精确定位新插入符号的确切位置,而无需在每次属性更改更新时直接回到 0!

0 投票
2 回答
433 浏览

java - JMenu按下抛出异常

在我的应用程序中,当我在我的 JMenuBar 中按编辑时,我收到

我无法找出我的应用程序有什么问题。这是代码:

0 投票
2 回答
955 浏览

c# - 尝试实现Undo/Redo,发现这篇文章我不太明白。帮助?

在我的应用程序中有一个多维数组,其中可能包含大量数据,因此每次用户更改时完全保存该对象似乎是不可行的。

我阅读了命令模式并最终找到了这篇文章,但我不太了解它。我不确定他的代码示例是如何工作的,以及这是否适用于我的应用程序。此外,这种“新”方法是否比 GoF 模式更可取?

我的应用程序具有适用于当前文档的画笔和填充工具等工具,我不确定如何最好地实现撤消/重做功能,但我知道为每个操作保存对象的状态不会允许无限撤消和重做,这就是我所追求的。我不确定命令模式是否可以在这种情况下使用,或者文章的实现是否以及如何工作。

希望有人可以详细说明这篇文章,或者解释一下命令模式如何适应我的需要。谢谢阅读!