こんにちは、高木です。

前回予告したように今回はplacerを実装していくことにします。placerには固有のサブコマンドはないので、geometry_managerクラスで定義したサブコマンド用のメンバー関数だけで十分です。

ただ、placerでは複数のウィジェットを指定することができません。geometry_managerの基本コマンドやconfigureは複数のウィジェットを指定できるようになっていますので、それらを使えないようにした方がいいでしょう。

それでは、placerのコードをざっと書いてみることにします。

これで最低限のことはできるようになりました。使えないメンバー関数はdeleteしておきました。

これだけでもいいのですが、placerのもっとも基本的な使い方はXY座標を指定してウィジェットを配置するというものです。ですので、その使い方に特化したメンバー関数を追加した方がいいでしょう。

configureまでXY指定専用のメンバー関数を用意するかどうかは微妙なところですが、今回は割愛して基本コマンドだけにしておきます。

基底クラスであるgeometry_managerのoperator()も使いたいので、新しく追加したoperator()がそれらを隠蔽してしまわないようにusingを使っています。あとは素直に実装しただけです。

ここまでやって気付いたのですが、こういう専用のメンバー関数を都度追加していくより、オプション用の関数かクラスを作って簡単に”-x 数値”や”-y 数値”を指定できるようにする方が得策かもしれませんね。

オプションの指定方法の改善については後日考えることにして、次回はgridderを考えていくことにします。