MxButton のトグル機能を使ってみる けど、、、

予定通り、 MxButton のトグル機能を使ったサンプルを作りましたが、どうやら、Mx ToolKit は、あまり利用されてない感じがする。 Clutter を利用した ToolKit は Gnome-Shell の ToolKit である St ライブラリを利用したほうが良さそうです。 St ライブラリなら Gjs をフルサポートしていますしね。

ということですが、一応サンプルです。MxApplication に MxWindow を作成し、そこに MxBoxLayout を貼りこみ、ボタンをいくつか作っています。最初のボタン0は、作成後にラベルを貼り付けるもの。二番目のボタン1は、作成時にラベルを貼り付けるもの。三番目のボタン2がトグルボタン。mx_button_set_is_toggle() するだけです。最後のボタン3はアイコン付きのボタン。mx_button_set_icon_name() するだけです。第二引数は、hicolor-icon-themeのインストール先 (/usr/share/icons/hicolor など)のアイコンファイルの suffix を取り除いたものになります。gtk-update-icon-cache コマンドを実行するディレクトリを調べてみるとわかりやすいかもしれません。

#include <mx/mx.h>

int
main (int argc, char *argv[])
{
	MxApplication *application;
	MxWindow *window;
	ClutterActor *box;
	ClutterActor *button0, *button1, *button2, *button3;

	application = mx_application_new (&argc, &argv, "application", MX_APPLICATION_SINGLE_INSTANCE);
	window = mx_application_create_window (application);
	mx_window_set_has_toolbar (window, FALSE);
	g_signal_connect (window, "destroy", G_CALLBACK (mx_application_quit), NULL);
	
	box = mx_box_layout_new ();
	mx_box_layout_set_orientation (MX_BOX_LAYOUT (box), MX_ORIENTATION_VERTICAL);
	mx_window_set_child (window, box);

	button0 = mx_button_new ();
	mx_button_set_label (MX_BUTTON (button0), "Button 0");
	mx_box_layout_add_actor (MX_BOX_LAYOUT (box), button0, 0);

	button1 = mx_button_new_with_label ("Button 1");
	mx_box_layout_add_actor (MX_BOX_LAYOUT (box), button1, 1);
	
	button2 = mx_button_new_with_label ("Button 2");
	mx_button_set_is_toggle (MX_BUTTON (button2), TRUE);
	mx_box_layout_add_actor (MX_BOX_LAYOUT (box), button2, 2);

	button3 = mx_button_new_with_label ("Button 3");
	mx_button_set_icon_name (MX_BUTTON (button3), "face-smile-symbolic");
	mx_box_layout_add_actor (MX_BOX_LAYOUT (box), button3, 3);

	mx_window_show (window);
	mx_application_run (application);
	return 0;
}

とりあえず、 Mx関係は終了して、他のライブラリの調査を開始します。