Gladeの活用

以前の章のようにUIをコードで記述していけば、UIを作ることができますが、命令的な記述では手間がかかります。 そこで登場するのが、GladeというGtk+アプリケーションのUIデザイナーです。

GladeでのUIの作成

glade &でGladeを起動すると、UIデザインの画面が表示されるので、そこでウィジットをドラッグアンドドロップで配置していきます。

glade

あとは、「ファイル>名前をつけて保存」によりUIの定義が記述されたXMLファイルを保存します。ここでは、ファイルパスをsrc/resources/main.ui とします。

BuilderによるUI定義ファイルの呼び出し

GtkBuilderを利用すると、Gladeで保存したファイルからUIを作成することができます。Rustのinclude_str!マクロを利用すると、コンパイル時に文字列にしておいてくれるため、さらに便利です。

保存したmain.uiを表示するには、Builderを作り、必要に応じてget_objectで取り出してシグナルを接続します。

extern crate gtk;

use gtk::prelude::*;

fn main() {
    gtk::init().expect("Failed to initialize GTK.");

    let ui = include_str!("resources/main.ui");
    let builder = gtk::Builder::new_from_string(ui);
    
    let window1 : gtk::Window = builder.get_object("window1").unwrap();
    window1.connect_delete_event(move |_, _| {
        gtk::main_quit();
        Inhibit(false)
    });

    window1.show_all();
    
    gtk::main();
}

get_object()は、型がわからないため、明示的に型を指示します。