-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
既存のモデルファイルを読み込んだ時に、自動でチェックが入るようにする #2
Comments
この問題については私も不便に思っていて、ここなどで自動でチェックするようには書いているのですが、チェックされてくれません。 APIを発行するタイミングの問題なのかな、とも思っているのですが、まだよくわかっていません。 |
@s-nakaoka さん、何か分かりますか? |
新規読み込み時のチェックについては、設計との兼ね合いもあって難しいところなのですが、要望が多いので対処法を考えたいと思います。 |
なるほど、そういうやり方もあったのですね。 |
ロード後(アイテムツリー構築後にシーングラフの構築が行われるのでそのあと?)であればAPIでオンオフできると理解しました。 まとめてオンオフ機能、やるとすれば
のような制御になるかと思うのですが、こうすると使いやすそう、というアイディアはありますでしょうか? |
デフォルトは形状データだけ全てオンでしょうか。 |
アイテムに関しては、アイテムがrootのアイテムにつながるタイミング(既にrootにつながっているアイテムからaddChildItemする、自身が存在するサブツリーのトップが同様にaddChildされる、等)でその旨のシグナルが発行され、これをItemTreeViewがとらえてItemTreeViewにアイテムが追加されます。その後初めてチェック状態の切り替えが可能になります。チェック状態はアイテム自身ではなく、ItemTreeViewの方がもつ仕様としているからです。 この仕様の理由ですが、ItemTreeViewは複数インスタンスの生成も可能として、機能やビューによってはそれ専用のItemTreeViewを持たせることも考えていたからです。例えば複数のシーンビューごとに専用のItemTreeViewをくっつけて、各シーンビューの表示の管理はそれぞれのItemTreeViewで行うとか。この場合、ひとつのアイテムに対して複数のチェック状態が存在することになるので、アイテム自身にチェック状態を持たせることができません。つまり、ドキュメント・ビューやMVC的な観点で、チェック状態はあくまでビュー側の要素だとした設計になっています。 ただ、ItemTreeViewの複数インスタンスを実際に導入したことはまだありません。上記の複数シーンビューの例では、ItemTreeView上に別のチェック状態を追加するという手段をとることにしました。これはシーンビューの設定ダイアログの「対象アイテム選択用の専用のチェックをアイテムツリービューに追加」をオンにすると利用可能となります。実際に複数のItemTreeViewを導入するなると、わかりにくくなってしまうかもしれませんね。 そうは言っても、この設計は維持しておきたく思っています。その分汎用性は高められると思うのですが、チェック状態をアイテム自身が有する場合と比べて、ちょっと分かりにくくなっている面もあります。 |
なるほど、基底のItemクラスにisEnabledみたいなプロパティを作ってItemツリーを構築するときに見てもらうというような実装でもよいのかな、という気もしていたのですが、アスペクトの違うツリーを構築することを考えると状態はツリーの数だけ存在しますね。 isEnabledByDefaultみたいな苦しいプロパティを作るか、lazy callみたいな仕組みでロード後にAPIを発行できるようにするかですかね。 |
それかbool isEnabledOnTree(ItemTreeViewPtr tree)みたいな関数を基底に作るのはどうでしょうか? 変な誤解のもとになってしまう危険はありそうですが、それなりにきれいなのではないかと思うのですが。 |
実は今本件対応のための実装を進めています。 |
実装しました。 |
この機能でEditableModelItemだけはチェックが入るようになりましたが、その先はどうしたらよいということでしょうか? |
モデル編集機能の場合、EditableModelItem以下に異種のJointItemやLinkItemが独立したアイテムとしてぶら下がる形(ファイルオープンは無い)なので、この対処にプラスしてItemManagerにデフォルトの値を登録するプログラム的な作業が必要かもしれませんね。 |
いろいろ表示が豪勢になってきたこともあって、チェックのON/OFFが大変になってきました。 |
本体側の制限かもしれませんが、モデルを読み込んでもチェックが入らず、複雑なロボット全体を表示するには、チェックを入れるために何度もクリックしなければならず大変です。
読み込んだら自動でチェックが入るとか、トップのアイテムにチェックを入れると子供も全てチェックが入るとかできないでしょうか。
The text was updated successfully, but these errors were encountered: