问题标签 [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.
ios - 核心数据撤消/重做 - 操作取决于撤消的内容
我的 iPad 应用程序(一个 OpenGL 绘图应用程序)中有一个有点复杂的数据模型,我正在努力实现撤消/重做功能。我喜欢 Core Data 将免费撤消数据模型更改的事实,但我不知道内置功能是否足以满足我的需求。
我已经看到很多在绘图应用程序中实现撤消/重做的示例,但是它们通常执行以下操作:
- 将托管对象上下文告知
undo
. - 从更改的数据模型中重绘页面上的所有内容。
这是非常低效的——在我的应用程序中,我需要能够根据正在“撤消”的特定对象执行撤消操作,这通常意味着只刷新画布的一部分。
所以我的问题是:我可以注册自己的撤消操作并将其与内置撤消一起使用吗?例如,假设我在用户画一条线时执行以下操作:
当我要撤消此操作时,会触发调用并适当更改模型吗?或者这种情况是否需要我放弃内置的托管对象上下文撤消系统并使用我自己的NSUndoManager
,包括自己删除和编辑数据模型?除非我能分辨出内置的撤消/重做实际上是在撤消什么,否则看起来这可能会变得非常混乱和复杂......
编辑:我怀疑(如果上面的想法可行)我需要将它包装到一个撤消组中,以便我注册的撤消操作将与数据模型更改分组?
另一个编辑:另外,我可以保证执行撤消操作的顺序吗?换句话说,如果我undo
在保存核心数据更改并注册我的撤消操作之后调用,我是否可以确保在调用我的撤消操作之前恢复已删除的实体?
vim - vim undo 仅限于某些主机上的一步
在我的一台开发机器上,我可以无限撤消,我可以按住你并一直回到我打开文件时。
另一方面,按 u 在我所做的最后两个更改之间切换,不再。
我拥有管理员访问权限的第一台开发机器和 vim 安装程序可以自由支配。第二个我没有,vim 必须安装在正常的操作系统路径之外,并且必须使用“Sendto”启动 vim。也许这是相关的,我缺少一些 rc 命令。还注意到我必须运行“syn on”才能突出显示该框。vimrc 也是空白的,所以现在我确定它与它有关。
从其他线程我不认为这与持久撤消功能有关,而只是一个 .swp 或 ~ 问题(无论这些文件用于什么......)
截止日期提示了可能是一个简单的问题。我该如何解决这个问题?
c# - 在 Visual Studio 扩展中记录撤消/重做操作
我编写了一个 Visual Studio 扩展,并让它记录与我的扩展相关的用户操作。我希望能够在日志中包含我的工具所做更改的撤消/重做信息,我希望能够通过在撤消/重做发生时调用事件侦听器并检查撤消/重做对象是否是与我的工具生成的动作相对应的那个。
目前,我有代码来获取ITextUndoHistory
current IWpfTextView
,我使用ITextUndoHistoryRegistry
我按照这个答案生成的。不幸的是,ITextUndoHistory
我得到的对象没有实现足够有用的功能。具体来说,它的UndoRedoHappened
事件被调用,但总是有一个事务null
。此外,它的UndoStack
/RedoStack
属性 throw System.NotSupportedException
。唯一有效的是CreateTransaction
给我一个事务对象,让我为在 Visual Studio 的撤消/重做列表中显示的操作设置名称,尽管我不需要它来工作。
是否有其他方法可以访问 Visual Studio 中的撤消信息?或者也许我可以访问一些更有创意的黑客?
xcode4 - XCode 4.2.1:撤消操作无法正常工作
有人对 Xcode 中的撤消操作(Cmd + Z)有疑问吗?当我使用 Undo 操作编辑我的 Objective-C 代码时,某些符号未正确编辑。例如:是 {
与 Undo {{
XCode 4.2.1
android - 如何保存位图以在 Android 中绘制撤消功能?
我正在制作一个应用程序,我可以在其中实现撤消功能,所以我得到以前的绘图线..但我无法做到。谁能帮忙举个例子,我将不胜感激。谢谢
android - 如何在Android绘画应用程序中实现撤消功能?
我想在我的应用程序中执行撤消功能..为此我搜索了我发现我在下面的代码中完成的 x,y 点的数组列表我无法撤消图纸?
但撤消撤消功能不起作用。
java - UndoRedo.Manager 和 JCheckBox
我正在使用 UndoRedo.Manager 在 Netbeans RCP 应用程序中实现撤消/重做功能。undoableEditListener 可以添加到任何 Document 中,这将其使用限制为与文本相关的字段。有谁知道我如何向没有文档的元素添加这样的监听器,比如 JCheckBox?
c# - 需要一些关于简单撤消/重做的指南
这是我的第一个 C# 应用程序,完全自学,没有任何软件编程背景。我对撤消/重做进行了一些研究,但找不到任何有用的东西(或易于理解)。因此,我希望有人可以帮助我为我的程序(winforms 应用程序)设计撤消/重做功能。该应用程序由一个主窗体组成,其中将调用后续子窗体以在某些事件(按钮单击等)期间记录用户指定的值。处理完每个事件后,将在缓冲区中绘制一个位图,然后在主窗体的 OnPaint 事件期间将其加载到主窗体内的图片框。每个输入都分离成自定义类对象并添加到单独的 List 和 BindingList 中。List 中包含的对象用于图形(指示坐标等),而 BindingList 中的对象用于在 DataGridView 上显示一些重要值。只是为了给出一个简短的描述,代码看起来像这样:
子表单的代码如下所示:
由于所有必要的数据都存储在列表中,并且只有在触发某些事件(主要是按钮单击)后才会更改,因此我尝试使用这些列表来确定运行时应用程序的状态。我实现撤消/重做功能的方法是添加以下代码:
结果: 应用程序未正确执行撤消功能。程序在正常情况下显示正确的输出,但是当触发撤消事件时,无论绘制了多少对象,应用程序都会恢复到初始状态(没有记录数据的状态)。在更改堆栈以检查 undoStack 中的计数数的事件期间,我使用了 System.Diagnostics.Debug.WriteLine() 并且它似乎给出了正确的计数。我猜这些列表需要以不同的方式复制/克隆?还是我在这里做错了什么?谁能指导我?无需考虑性能、可读性、资源管理、未来维护等。
c++ - Visual C++ 撤消和重做操作
我正在尝试在 Visual-C++ 中制作一个相当大的应用程序,现在我正在尝试添加撤消/重做功能。
有相当多的事件(按钮单击、标签文本更改等),我想找到一种方法来撤消/重做,而无需向每个函数添加代码。例如,我想要一个可以读取完成的每个事件并自动存储它的类。然后在我的撤消/重做事件中,我可以获取存储的最新操作。
如果那不可能,我不会介意其他方式。
有什么帮助吗?
qt - 如何将 qundocommand 保存到文件并重新加载?
我正在使用 qt 的撤消框架,它使用 qundocommand 来做一些应用程序支持撤消。有没有一种简单的方法可以用来将这些 qundocommand 保存到文件并重新加载?