C++ Undo入門

コマンドチェインの無効化に対応

例えば移動したディレクトリを記録しているときに、履歴に残っているディレクトリが途中で削除されてしまった場合には、そのディレクトリへ移動できないようにしたり、そのディレクトリを表す項目を淡色表示したい、というようなこともあるでしょう そこで、…

コマンドチェインに名前を付ける

Undo/Redoの履歴を表示したいときなどがあります このようなときコマンドのグループに名前が付いていると便利です コマンドチェインに名前を付けられるようにしてみましょう Undo コマンド管理クラスの実装 #define INVALID_COMMAND_ID (( uint32_t )-1) #de…

コマンドチェインの最初と最後を検知できるように

Undo/Redo の際、コマンドチェインの最初と最後のタイミングがわかると便利なときがあります コマンドチェインを実行するときに、最初と最後のタイミングも通知するようにしてみましょう Undo コマンドの基底クラスの実装 最初と最後のタイミングを通知する…

コマンドチェインの登録を途中で中止できるように

コマンドのグループ化に対応できるようになりましたが、途中でエラーが発生したときなどに、キャンセルするということができませんでした コマンドチェインを途中でキャンセルできるようにしてみましょう Undo コマンド管理クラスの実装 #define INVALID_COM…

コマンドチェインに対応

一度の操作で複数のコマンドを一括して Undo/Redo したいというときがありますが、前回のコードでは対応していませんでした コマンドのグループ化、コマンドチェインに対応しましょう Undo コマンド管理クラスの実装 #define INVALID_COMMAND_ID (( uint32_t…

初歩的な実装

Undo コマンド まずは Undo マネージャに登録するコマンドのインターフェイスを決めましょう Undo マネージャに登録するコマンドはつまり Undo 可能なコマンドということですが、この Undo 可能なコマンドはアプリケーション側が実装するものです そしてこの…

C++ Undo入門

はじめに どのようなアプリケーションでも Undo 機能はぜひとも欲しい機能の一つだと思いますが、残念ながら Undo を実現するための標準的なフレームワークというようなものは存在しません ですからアプリケーションに Undo の機能を追加しようとすれば一か…