问题标签 [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 投票
10 回答
154807 浏览

emacs - 使用 Emacs 进行“撤消”后如何“重做”更改?

这篇文章说“Emacs 具有重做,因为您可以在撤消时反转方向,从而撤消撤消”。

这是什么意思?用户如何使用 Emacs “重做”?

0 投票
2 回答
4663 浏览

silverlight - 如何在 MVVM 应用程序中实现撤消/重做?

我正在开发一个 Silverlight LoB 应用程序,设计师希望它有一个选项卡式界面,类似于 Visual Studio 的界面(我们可能会使用 Telerik Rad 控件来停靠选项卡)。完成原型后,界面到目前为止运行良好,但我在思考如何在 MVVM 项目中实现撤消/重做功能时遇到问题。

撤消/重做功能必须:

  1. 在撤消/重做时,恢复 UI 状态,即将焦点、选择等返回到更改所源自的控件(例如文本框)。
  2. 有一个按视图撤消/重做堆栈

通常,我会使用命令模式,但我不确定如何将其应用于 MVVM。

我使用命令和绑定来获得视图和视图模型的理想化松散耦合,但它使撤消/重做变得更加棘手,因为视图模型没有任何视图和状态的概念收到命令或更改绑定属性时的视图。似乎我需要某种服务跟踪,只要用户执行一些可撤消的操作并获取状态以供以后恢复,该视图就处于活动状态。

对于在 MVVM 中实施撤消/重做的最佳实践是否有任何共识?我对 Daniel Vaughan 在他的 Calcium 项目中如何做到这一点很感兴趣。Blend 显然是使用 MVVM 模式编写的,它的行为就像我希望我的应用程序那样,如果 MS 解释他们是如何做到的,那就太好了!

0 投票
8 回答
16820 浏览

java - 如何在文本编辑器中设计撤消和重做?

我项目的一部分是编写一个文本编辑器,用于输入一些规则、编译我的应用程序并运行它。编写编译器已结束并发布测试版。在最终版本中,我们必须在文本编辑器中添加撤消和重做。我使用一个文件并定期保存它以供文本编辑器使用。如何为我的文本编辑器设计撤消和重做?文件持久化的结构有什么变化?

0 投票
1 回答
1615 浏览

cocoa - Can't successfully register undo from NSTextField

I have a simple document-based application that simply creates a custom XML file. It uses an Outline View to navigate the XML document. When an item in the Outline View is selected a custom view is displayed as a sub view of the document view that allows the user to enter in data. On one of the views has a NSTextField. It has its "Allows Undo" flag set. I tested to ensure the undoManager is called on the NSDocument when the editing is completed. So the control seems to be bouncing through the First Responder as it should.

In the IBAction I use the ActionName so it will display correctly in the menu. Now here is the problem. Not only is the ActionName not displayed in the menu, but clicking undo doesn't reverse the action taken on the NSTextField but the action registered just before it. Is there something I overlooked when setting up undo with NSTextField?

(IBAction)textFieldChanged:(id)sender{

...some code here...

[[self undoManager]setActionName:@"Change Text"];

}

Thanks in advance, Rob

0 投票
1 回答
306 浏览

qt4 - QUndoCommands 是否应该绑定到视图或模型?

在 Qt 的undo framework中,你可以拥有一堆QUndoCommand实例。这些中的每一个都描述了用户界面中的一个动作。在我们的应用程序中,我们有一组视图处理一组模型,其中一些是组合的,而且我们经常有多个视图处理同一组模型。我现在正在研究基于此框架撤消操作的能力。

现在,我熟悉使用命令类来描述 UI 操作的一般模式,但是这些应该表示 UI 元素中的状态更改,还是底层模型中的数据更改?一个命令类应该包含多少数据和状态?

一个例子来说明我的观点:假设您有一个QStandardItemModel作为基础模型,以及位于此之上的许多代理模型。每个代理模型都会进行排序转换,例如通过某个值的出现进行过滤。然后,如果我创建一个命令类来专门更改这些代理模型之一中的一个值,并且过滤条件发生更改,则该命令类的状态将变为无效。所以我还必须包含过滤器的状态,或者映射到最终的底层模型。另一种选择是为 UI 中的所有状态更改添加命令(例如,导致过滤条件更改的那些),但这样做的缺点似乎是要撤消的命令列表变得相当大。

这里有哪些最佳实践?

0 投票
2 回答
489 浏览

wpf - 如果值已更改,WPF 撤消重做属性系统以红色突出显示

我对非常复杂的 UI 有以下要求。(这里的复杂意味着表单中有很多控件 [大约 100])。我正在使用MVVM(如果我的问题需要它稍微远离 MVVM,我可以接受)

我的问题是Editable ComboBoxTextBox。但我想说我喜欢听一个适合所有控件的通用算法。

要求1:用户编辑内容并转到下一个控件,控件/文本的颜色应变为红色。

要求 2:当用户回到之前编辑的控件并输入最初存在的值时,控件/文本的颜色应该变回黑色。

我知道这个要求很严格,我一直在努力设计一个通用算法,使用它我可以存储以前的值并调用一个函数来更改控件的颜色。

为了给大家一个想法,
--> 我尝试为每个 TextBox 存储 2 个属性,例如 Default_Text 和 Text。但由于属性数量巨大,内存占用非常巨大。保持这么多属性也非常困难。
--> 我尝试向每个 ViewModel 添加一个字典来存储已更改的值。但在这里我面临的问题是为我的应用程序中的所有控件提供唯一键,这不是很有帮助
-->我什至考虑过并尝试将控件子类化,如 TextBox、ComboBox 并覆盖一些方法以满足我的要求,但遗憾的是当我开始添加验证和所有内容时,我失败了。

所以在这里我坚持设计一个通用的 WPF 属性系统/算法来处理所有撤消重做功能、更改控件样式等!!!

如果您的专家能够指导我正确的方向并帮助我开发这样的算法/系统,那将是非常棒的。一个示例插图会很好!

0 投票
1 回答
460 浏览

wpf - WPF验证“之前”设置值或发出命令

问候,

我对 WPF 比较陌生,并且遇到了与使用 DataGrid 控件进行验证有关的问题。我已经阅读了这篇文章 (http://msdn.microsoft.com/en-us/magazine/ff714593.aspx),它涵盖了三种不同的验证方式,但它们似乎都没有解决如何防止设置值或调用在执行所有验证之前撤消/重做命令。

我想确保只能在单元格中输入正数。我设置了一个验证规则来检查单元格是否包含负数,并且我处理 DataGrid 的 CellEditEnding 事件以了解何时实际更改模型层中使用的数字。问题是在验证规则之前调用了 CellEditEnding。当验证规则发现问题时,模型中的数字已经设置好了。我需要的是 CellEditEnded,但似乎这个事件只存在于 Silvelight 版本的 DataGrid 中。

有任何想法吗?

谢谢

0 投票
3 回答
8416 浏览

c# - 如何在程序没有重大变化的情况下实现撤消/重做操作

嗨,我即将向我目前正在编写的应用程序添加新功能。我需要编写撤消/重做功能。但是,我们 90% 的应用程序已经准备好,我不知道在没有已经创建的影响(太多)代码的情况下实现此功能的最佳方法是什么。

0 投票
1 回答
91 浏览

iphone - iPhone以苹果方式重做按下的按钮

由于 iPhone 具有文本复制过去功能,通过摇动手机具有很好的重做处理程序,我想知道我是否可以使用此功能重做被用户错误触摸的按钮触摸动作。

任何的想法?

马库斯

0 投票
3 回答
560 浏览

android - is it good idea to store bitmaps as temp files to implement undo and redo feature?

In my project i am making big changes on pixels of a bitmap and i want to add undo redo feature to this project.Sincesaving several bitmaps on VM's memory is not a good idea i thought my only choice is storing history(bitmaps) as temp files.Before starting to implement i want to be sure i am doing something not stupid here.