リンクでチュートリアルを行っています http://www.micahcarrick.com/gtk-glade-tutorial-part-1.html
Gtk-builder-convert tutorial.glade tutorial.xmlを実行すると、次のエラーが表示されます
Traceback (most recent call last):
File "/usr/bin/gtk-builder-convert", line 799, in <module>
sys.exit(main(sys.argv))
File "/usr/bin/gtk-builder-convert", line 787, in main
conv.parse_file(input_filename)
File "/usr/bin/gtk-builder-convert", line 162, in parse_file
self._parse()
File "/usr/bin/gtk-builder-convert", line 234, in _parse
assert glade_iface, ("Badly formed XML, there is "
AssertionError: Badly formed XML, there is no <glade-interface> tag.
空き地ファイルは次のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<!-- interface-requires gtk+ 3.0 -->
<object class="GtkWindow" id="window">
<property name="can_focus">False</property>
<property name="title" translatable="yes">GTK+ Text Editor</property>
<signal name="destroy" handler="on_window_destroy" swapped="no"/>
<child>
<placeholder/>
</child>
</object>
</interface>
注:gladeファイルは、ubuntu 12.10のGlade 3.14.0を使用して生成されました
Glade/GTKで最後にプログラミングしたとき、「gtk-builder-convert」は必要ありませんでした。 gladeが提供する.gladeファイルは、それ自体が必要なxmlファイルです。既にファイルを.xmlに変換したかのようにコードをプログラムするだけです(ところで、私はglade 3.12.1を使用しています)。なので:
#include <gtk/gtk.h>
void on_window_destroy (GtkWidget *object, gpointer user_data) {
gtk_main_quit();
}
int main (int argc, char *argv[]) {
GtkBuilder *builder;
GtkWidget *window;
gtk_init (&argc, &argv);
builder = gtk_builder_new ();
gtk_builder_add_from_file (builder, "ui.glade", NULL);
window = GTK_WIDGET (gtk_builder_get_object (builder, "window1"));
g_signal_connect (window, "destroy", G_CALLBACK (on_window_destroy), NULL);
gtk_widget_show (window);
gtk_main ();
return 0;
}