问题标签 [gtkd]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
824 浏览

user-interface - 在 GTK+ (gtkD) 中处理按键

我在玩gtkD(GTK+ 的 D 绑定)

我有一个window对象,实例gtk.MainWindow。我想处理它的按键。

  • 如何?
  • 如何处理特殊键(例如箭头键、pgup/pgdn 等)?

PS我知道这类问题可以用谷歌和其他东西来回答,但我在stackoverflow上看到了很多“更简单”的问题,所以我认为提问并没有什么坏处。

另外,有时,基本的东西往往会被隐藏在文档页面下。

0 投票
3 回答
732 浏览

gtk - 在D中,如何传递一个空字符串?(对 gtkD)

将 D1 与火卫一搭配使用

我有一个文本输入字段,实例gtk.Entry.Entry

调用setText("")引发运行时错误

为什么?这似乎是D的问题,我试过这个:

程序因断言失败而终止。

我该如何解决这个问题?

0 投票
1 回答
1654 浏览

user-interface - gtkD:最小绘图示例?

我是一个相当有经验的程序员,但对 GUI 编程很陌生。我正在尝试将我为 DFL 编写的绘图库移植到 gtkD,但我无法显示图纸。以下代码为我生成了一个空白窗口。有人可以告诉我它有什么问题,和/或发布最小的示例代码来获取几行到 aDrawingArea并在 a 中显示结果MainWindow吗?

0 投票
2 回答
1274 浏览

user-interface - GTK:如何忽略“无法打开显示”错误?

我已经使用 D 编程语言的 gtkD 绑定编写了一些 GTK 程序,这些程序原本是控制台应用程序,但能够在屏幕上显示绘图并将它们保存到文件中。我想在我只有基于控制台的 SSH 访问的机器上运行这些,这意味着这些图不会显示在屏幕上,但仍会写入文件。

当我调用 Main.init() 时,我得到一个 Gtk-WARNING **: cannot open display,如预期的那样。当我改为调用 Main.initCheck() 并忽略错误时,我只是在稍后的执行中遇到更多与缺少屏幕相关的错误。

是否有一些简单的方法可以让我的程序忽略没有可用屏幕的事实,将其所有的屏幕绘制到某个虚拟设备(相当于 /dev/null 的图形)并仍然实际绘制到 Pixmaps 和 Pixbufs(对于将绘图保存到文件)并运行应用程序的非基于 GUI 的部分?

编辑:如果应用程序启动一个窗口并在事件循环上阻塞,理想的做法是立即关闭窗口(或首先无法成功打开它)并继续运行基于非 GUI 的部分的程序。如果这是不可能的,我可以通过确保不启动任何窗口来解决它。

此外,Pixbufs 和 Pixmaps 似乎在没有屏幕的情况下无法工作。我尝试绘制到 Pixmap,从中创建一个 Pixbuf,然后在调用 Main.checkInit() 并忽略错误或没有 init 语句之后将结果保存到文件中,无论哪种方式 GTK 都会抱怨缺少屏幕。

0 投票
0 回答
1066 浏览

windows - DLL 地狱:SnacNp64.dll + gtkD

显然,当我在安装了 Symantec Endpoint Protection 并映射网络驱动器的 Win64 系统上运行我使用 gtkD 创建的一些 32 位应用程序并尝试打开文件对话框时,运行时中的某些内容会尝试加载 SnacNp64.dll,一个 64 位DLL,放入 32 位地址空间。此 DLL 是 Symantec Endpoint Protection 的一个组件,用于网络内容,因此此错误仅在如此有限的情况下发生。

当我从 Win64 本机控制台运行程序并尝试加载文件对话框时,我得到:

映像文件 C:\Program Files (x86)\Symantec\Symantec Endpoint Protection\SnacNp64.dll 有效,但适用于当前机器以外的机器类型。选择 OK 继续,或 CANCEL 使 DLL 加载失败。

当我选择取消时,一切正常,并且程序似乎没有因 DLL 无法加载而受到任何不良影响。当我选择 ok 时,我遇到了访问冲突,大概是因为 gtkD 试图将 64 位 DLL 加载到 32 位程序中。

但是,当我从 Cygwin 终端而不是本机 Win64 终端运行时,Cygwin 控制台似乎捕获了错误并强制加载 DLL,从而使我的应用程序崩溃。

对于同一台机器上的其他基于 32 位 GTK 的应用程序(例如 GIMP)似乎不会发生此错误。

基本上,我如何绝对确保我的 32 位应用程序在任何情况下都不会尝试加载 64 位 DLL?

0 投票
2 回答
1130 浏览

d - 在 Ubuntu 10.04 上设置工作 D2.x 工具链(使用 gtkd)

几天来,我一直在玩 D,并且对此感到非常兴奋,直到,也就是说,我试图让 gtkd 工作。我现在浪费了 3 天中最好的部分来尝试设置工作,并且开始变得(阅读;很久以前)有点士气低落。在我放弃之前,我想知道是否有人可以提供帮助。我可以在网上找到的很多信息都已经过时了,所以我不确定我是否认为这是可能的。

剩下的只是我到目前为止所尝试的,如果你有一个快速的解决方案,你可能不需要阅读它,所以请随意跳到... [跳到这里]

所以,首先我需要知道,tango 是否真的可以与 D2.0 一起使用,我相信它最初不是,但现在 D2.x 是这样的,你可以同时使用 tango 和 phobos。如果这不是真的,那么我想我已经在第一个障碍上掉下来了,这是一个非首发。

到目前为止我已经采取的步骤。

  1. 我从 ubuntu 存储库安装了 gdc
  2. 我从 repos 安装了 libtango-headers (注意,只有头文件,没有可用的库,所以帮助不大)
  3. 我手动安装了dsss

这个设置可以编译 D,但是当我开始安装 gtkd(使用 dsss)时,它编译了,但是在尝试使用它编译任何东西时我得到了各种错误(与探戈有关)。好吧,正如我提到的,我没有库,所以这不应该是意外的。我尝试手动安装探戈库,但仍然遇到很多错误,最后求助于dsss net install tango警告我无法回到 phobos (正如我所提到的,这让我感到困惑,我认为这两个可以一起使用)无论如何,我继续进行,它完全搞砸了我的设置。我现在无法编译任何 D。

抱歉,我无法更明确地说明我在上一节中遇到的错误,老实说,我不记得了。

无论如何,我删除了我安装的所有东西。并重新开始。

  1. 我从 repos 安装了 gdc
  2. 我手动安装了 dsss

我现在读到最新的探戈不适用于 gdc(不确定这是否属实)所以我

  1. 得到了 dmd 的 deb 并安装了它。
  2. 手动安装了最新的 tango(库和头文件)。
  3. 用 dsss 安装 gtkd

现在我无法让dsss识别dmd,所以只能使用gdc。然而,这并没有找到探戈。如果我直接使用 dmd,它会找到 tango 和 gtkd,但我会收到有关volatile不推荐使用的语句的错误。在 D2.x 中显然是正确的,这让我回到“甚至支持探戈”。

天哪,我很困惑!

[跳转到这里]

如果有人可以逐步指导我如何设置工作设置,我将永远感激不尽!

谢谢,T。

更新: “我们在那里!”

所以我从http://www.digitalmars.com/d/download.html下载了 dmd.2.049.zip并解压到我的主目录并做了一个export PATH = $PATH:~/dmd2/linux/bin(感谢 dsimcha)。

忘了dsss根据http://www.dsource.org/projects/gtkd/wiki/UsingSubversion的说明获得 gtkd 的 svn 版本。编辑GNUmakefile将前缀更改为/home/me/dmd2/linux并做了一个make install.

编辑~/dmd2/linux/bin/dmd.conf所以包含路径../include(放入了 gtkD 库,../lib所以我不需要编辑库路径)。

现在终于用 gtkD 编译了,我需要链接 libgtkd 和 libdl,这是由dmd mydprog.d -L-lgtkd -L-ldl(感谢 jpf)完成的。

0 投票
4 回答
1649 浏览

d - gtkd 入门

我是 D 新手,想尝试一下 gtkd。我在 Arch linux 上,并安装了dmd2-complete(dmd 2.0.56) 和gtkd-svn(gtkd built against D2) 包。我还验证了 D 本身工作正常(编译并运行了一个基本writefln("hello world");程序)。

现在我正在尝试启动并运行 gtkd,并且很难从示例中编译和链接基本的 helloworld 程序。

具体来说,我需要将哪些选项传递给 dmd 以使其链接?我能找到的几乎所有文档都完全跳过了这一点。

gtkd-svn软件包在 /usr/lib 中安装了以下内容:

0 投票
1 回答
273 浏览

multithreading - 带有 gtkD 的多线程应用程序

我正在玩 gtkD 一段时间,我正在并行学习 D2/Phobos。昨天我正在查找 std.concurrency 模块并尝试编写一个玩具多线程分形查看器,但问题是我看不到多线程与 gtkD 一起工作的方式。

现在,我有这个:

在 Andrei 的书中,在并发章节中,有消息传递范式,我想应用它,但问题是 gtk 主循环对我隐藏。我不喜欢上面的代码,因为它很难转换为非共享并且可能不安全。那么有什么方法可以继承一个“线程不可知”类,使其成为线程感知的,gtkD 中编写多线程应用程序的标准机制是什么?我见过 gthread.Thread 模块,但它的作用似乎只是作为外部 C gtk+ 线程功能的接口。

0 投票
1 回答
397 浏览

performance - Gtk/GtkD 在窗口调整大小时检测鼠标按钮的释放?

我正在尝试改进我用 GtkD(Gtk 的 D 绑定)编写的绘图库。具有很多点的散点图需要很长时间才能调整大小。我想重新缩放图像,允许像素化,同时用户拖动窗口边缘以调整大小,并且仅在释放鼠标按钮时重新渲染它。

是否有 API 可以检测在调整窗口大小时用户是否仍在按住鼠标按钮拖动窗口边缘?如果您不熟悉 GtkD,仍然会感谢您对 C Gtk API 的回复。

0 投票
5 回答
1213 浏览

windows-7 - 如何在Win7和dmd(D2)中使用gtkD?

我下载gtkD-1.5.1并解压到某个gtkD目录。我下一步该怎么做?我不明白我是否必须编译并将其链接到某个库,或者只是在我的代码中链接到它?


编辑:(@dsimcha)

dsss buildgtkD 主目录中的命令给了我这个:

但没有创建库?