如何使用Glade / GtkD和D编程语言显示Hello World

时间:2015-09-11 05:29:11

标签: linux ubuntu-14.04 d glade gtkd

在Ubuntu Linux上,我可以使用Glade应用程序创建一个Hello World对话框。现在我如何让D编程语言显示它?

1 个答案:

答案 0 :(得分:11)

  1. 安装在Mac,Linux或Windows计算机上编译D语言的 DMD编译器。您可以获得有关此here
  2. 的更多信息
  3. 在Mac,Linux或Windows计算机上安装 Glade界面设计器。您可以使用sudo apt-get install glade轻松地在Ubuntu Linux上获得 Glade ,但有关在各种其他平台上安装的更多信息是here
  4. 在Mac,Linux或Windows计算机上安装 GTKd 。这并不容易。您需要先从gtkd.org处的文档开始,然后在DLang.org Learn forum中进行互动,以便在必要时获得更多帮助。
  5. 打开 Glade 并创建一个新窗口,上面标有Hello World。
  6.   

    请注意,Glade中的工具选项板显示 Window 小部件和 ApplicationWindow 小部件。由于我们没有绘制任何菜单,因此请确保您使用 Window 小部件而不是 ApplicationWidget 。如果你没有这样做,你会在运行应用程序时收到警告,谈论一些丢失的菜单调用。

    将其另存为 hello.glade

    1. 在文本编辑器中打开 hello.glade 文件,并查找与此类似的行:
    2. <object class="GtkWindow" id="window1">

      写下一张 id 属性的纸张。

      1. 在与 hello.glade 文件相同的目录中创建 hello.d 脚本并更改以下内容,将 window1 更改为你之前写下的 id 是什么。
      2. 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;
        }
        
        1. 编译很棘手。在Ubuntu Linux上,我必须创建如下语句。您可能需要在dlang.org Learn forums中与您的特定平台进行互动。
        2. # dmd hello.d `pkg-config --cflags --libs gtkd3`
          
          1. 编译完成后,您可以运行D可执行文件以显示Hello World对话框。在Ubuntu Linux上,我只是做了:
          2. # ./hello

            1. 请注意,当您看到窗口并将其关闭时,您可能会在Linux上收到一些警告。 (在其他平台上,这可能会有所不同。)我收到一条警告“无法连接到辅助功能总线 - 连接被拒绝”。至少在Linux上的修复是将其添加到底部的〜/ .bashrc 脚本中:
            2. export NO_AT_BRIDGE=1

              现在,当您打开命令提示符并再次运行已编译的D命令“hello”时, 它不会显示错误。

              如果您收到有关菜单的错误,则使用 ApplicationWindow 小部件而不是a Window 小部件,需要在 Glade 中切换。

              添加按钮&amp;信号

              1. 我这样做的方法是点击 Glade 中的小部件,点击信号,找到我要添加的活动,例如单击,然后在“处理程序”列中键入一个函数。例如,在button1上,我会输入 onButton1Clicked 。保存文件。

              2. 现在,在D源代码中,在创建Window对象后立即添加以下代码:

              3. b.connectSignals(null);

                ...其中b是您的Builder变量。

                1. 在D源代码中,为此信号添加一个函数。例如,我做了:
                2. extern(C) void onButton1Clicked()
                  {
                      writeln("got here");
                      Main.quit();
                  }
                  

                  请注意,在这种情况下,extern(C)是必需的。

                  1. 重新编译并运行您的应用程序。您会看到它会自动运行您点击该按钮的新功能。