GUIをGladeで作成しました。
Gladeでの作成画面
adjustmentの設定画面
Scale上のスライダの表示方法は、下に書いてあります。
gtkcluttergl4.vala
using Gtk;
using GtkClutter;
using Clutter;
public class Main : Object
{
const string UI_FILE = "mainwindow.ui";
private Builder builder;
private Clutter.Actor coglbox;
private static float alpha;
public Main ()
{
try
{
builder = new Builder ();
builder.add_from_file (UI_FILE);
builder.connect_signals (this);
CreateUI ();
var window = builder.get_object ("window1") as Gtk.Window;
window.title = "GtkClutterGL4";
window.destroy.connect (Gtk.main_quit);
window.show_all ();
}
catch (Error e) {
stderr.printf ("Could not load UI: %s\n", e.message);
}
}
private void CreateUI ()
{
var box = builder.get_object ("box1") as Gtk.Box;
var widget = new Embed ();
box.pack_start (widget, true, true, 0);
var stage = widget.get_stage ();
stage.width = stage.height = 400;
stage.background_color = Clutter.Color () { alpha = 255 };
coglbox = new Clutter.Actor ();
stage.add_actor (coglbox);
coglbox.paint.connect (paint_cb);
var button = builder.get_object ("button1") as Button;
button.clicked.connect (Gtk.main_quit);
var scale = builder.get_object ("scale1") as Scale;
scale.value_changed.connect *1;
alpha = (float)scale.get_value ();
coglbox.queue_redraw ();
});
}
private void paint_cb ()
{
//stdout.printf("paint-cb \n");
Cogl.TextureVertex vertices1[3];
Cogl.push_matrix ();
Cogl.translate (200, 200, 0);
Cogl.rotate (alpha, 0, 0, 1);
vertices1[0].x = 0;
vertices1[0].y = -150;
vertices1[0].z = 0;
vertices1[0].color.set_from_4f (1.0f, 0.0f, 0.0f, 1.0f);
vertices1[1].x = -150;
vertices1[1].y = 150;
vertices1[1].z = 0;
vertices1[1].color.set_from_4f (0.0f, 1.0f, 0.0f, 1.0f);
vertices1[2].x = 150;
vertices1[2].y = 150;
vertices1[2].z = 0;
vertices1[2].color.set_from_4f (0.0f, 0.0f, 1.0f, 1.0f);
Cogl.polygon (vertices1, true);
Cogl.pop_matrix();
}
}
void main (string[] args)
{
GtkClutter.init (ref args);
new Main ();
Gtk.main ();
}
ビルド
valac --pkg gtk+-3.0 --pkg clutter-gtk-1.0 gtkcluttergl4.vala
Scaleのスライダの表示
スライダを表示する方法は、gladeで設定する方法とプログラム内で設定する
方法があります。
1 galdeで設定
glade上でスライダを表示するには、Scaleにアジャストメントを設定する。
設定の方法
1 Scaleを選択。
2 Scaleプロパティ内のアジャストメントの右側のアイコンをクリック。
3 アジャストメントの選択ダイアログで、新規(New)をクリック。
4 ajdjustment1オブジェクトが生成される。
5 ajdjustment1を選択し、必要な設定をする。
2 プログラム内で設定
gladeのuiファイルからScaleを取り出し、set_rangeメソッドで設定する。
例 var scale = builder.get_object ("scale1") as Scale;
scale.set_range (0, 100);
注意 このブログでは、引数なしの無名関数の表示が変になります。注釈のようになっています。
*1:) => {
stdout.printf ("%f\n", scale.get_value (