Vol*_*ike 5 linux d glade gtkd ubuntu-14.04
在Ubuntu Linux上,我可以使用Glade应用程序创建一个Hello World对话框.现在我如何让D编程语言显示它?
Vol*_*ike 11
sudo apt-get install glade,但是有关在各种其他平台上安装的更多信息都在这里.请注意,Glade中的工具选项板显示了一个Window小部件和一个ApplicationWindow小部件.由于我们没有绘制任何菜单,因此请确保使用Window小部件而不是ApplicationWidget.如果你没有这样做,你会在运行应用程序时收到警告,谈论一些丢失的菜单调用.
将其保存为hello.glade.
      <object class="GtkWindow" id="window1">
写下一张id属性的纸.
import gtk.Builder;
import gtk.Main;
import gtk.Widget;
import gtk.Window;
import std.stdio;
int main (string[] args)
{
    Main.init(args);
    Builder b = new Builder();
    b.addFromFile("hello.glade");
    Window w = cast(Window)b.getObject("window1");
    w.addOnHide( delegate void(Widget aux){ Main.quit(); } );
    w.showAll();
    Main.run();
    return 0;
}
# dmd hello.d `pkg-config --cflags --libs gtkd3`
       # ./hello
       export NO_AT_BRIDGE=1
现在,当您打开命令提示符并再次运行已编译的D命令"hello"时,它将不会显示该错误.
如果您收到有关菜单的错误,那么您使用ApplicationWindow小部件而不是 Window小部件,并且需要在Glade中切换它.
我这样做的方法是单击Glade中的小部件,单击Signals,找到我要添加的事件,例如单击,然后在Handler列中输入一个函数.例如,在button1上,我会输入onButton1Clicked.保存文件.
现在,在D源代码中,在创建Window对象之后,添加以下代码:
       b.connectSignals(null);
...其中b是您的Builder变量.
extern(C) void onButton1Clicked()
{
    writeln("got here");
    Main.quit();
}
注意,在这种情况下,需要extern(C).