问题标签 [gtkada]

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 回答
150 浏览

callback - 无法使用 Gtkada 中的回调处理程序传递框小部件

我创建了一个程序“freedisk”来在 Gtk3 网格中显示一些数据。一个新窗口填充了一些用于布局和标签目的的框,主要内容是可更新的,填充网格,它本身在一个 VBox 中。

数据显示工作正常;问题在于更新过程。我打算销毁网格中的子小部件,并使用新数据重新创建它们。

存在一个应该触发更新的按钮,当单击它时,它将通过处理程序传递 VBox 的名称(在程序“Content_Box”中调用),然后该处理程序运行适当的子程序来销毁 Content_Box 子项并重新创建它们。

简化代码如下(先处理程序包):

Freedisk_Cb.ads

Freedisk_Cb.adb

Make_Table 是计算和显示数据的子程序;我暂时把它放在一边,尽量保持简短。

主程序代码(再次被大大简化)是:

freedisk.adb

因此,当我尝试构建它时,出现以下错误:

freedisk.adb:103:20:没有候选解释与实际情况匹配:
freedisk.adb:103:51:预期类型“处理程序”定义在 gtk-marshallers.ads:546,实例在 gtk-handlers.ads:1164,实例在freedisk_cb.ads:13
freedisk.adb:103:51: 在 gtk-handlers.ads:1205 调用“To_Marshaller”时,发现类型访问在第 103 行
freedisk.adb:103:51: ==> 中定义的过程“Refresh_Process” , freedisk_cb.ads:13
freedisk.adb:103:51: ==> 调用 gtk-handlers.ads:1200 上的“To_Marshaller”实例, freedisk_cb.ads:13
freedisk.adb:103:51: = => 在 gtk-handlers.ads:1195 调用“To_Marshaller”,freedisk_cb.ads:13 的实例

等等等等

如果传递给回调的 VBox“数据”不是输入输出变量,我不会遇到这个问题,但这种方式并没有多大用处。显然缺少一些基本的东西。

我查看了 Gtkada 文档http://docs.adacore.com/live/wave/gtkada/html/gtkada_ug/signals.html的信号页面中的示例 - 提到的示例列出了它们的代码在一个目录examples/user_data中,不幸的是我无法找到(我下载了Gtkada的二进制和源代码分发)。

提前致谢。任何帮助表示赞赏。

我现在在这里上传了完整的代码:https ://sourceforge.net/projects/tx82/files/

可以下载单个文件或完整的压缩包。

它是在 Slackware 14.2 x64 上使用 2016 GPL Gnat、Gprbuild 和 Gtkada 构建的。

0 投票
1 回答
255 浏览

ada - GTKAda你好世界

我在尝试运行 GPS 附带的 gtkada 示例程序时遇到链接错误。

链接 [链接] main.adb /usr/lib/x86_64-linux-gnu/libgtk-3.so:未定义对“pango_fc_font_map_config_changed”collect2 的引用:错误:ld 返回 1 退出状态 gprbuild:main.adb 的链接失败 [2018- 07-19 09:39:45] 进程以状态 4 退出,100% (8/8),经过时间:01.05s

有没有办法查看 GPS 正在搜索哪些库路径?

谢谢,

0 投票
1 回答
648 浏览

ada - 未知项目文件:“gtkada”

我有 GPS 社区版,但它不能创建 GtkADA 项目。因此,我使用 GPR 项目克隆并构建了 GtkADA,但是当我尝试打开 GtkADA 示例或从 GPS 启动新的 GtkADA 项目时,出现错误:

未知项目文件:“gtkada”

编辑:Windows 10 x64,试图“进入”Ada。

编辑2:走得更远。我尝试设置 GPR_PROJECT_PATH 以包含以下路径:

驱动器:\gitrepos\gtkada\src
驱动器:\gitrepos\gtkada\src\lib
驱动器:\gitrepos\gtkada\src\lib\gtkada\可重定位
驱动器:\gitrepos\gtkada\src\obj

我正在尝试运行从https://www.adacore.com/code-samples为 GtkAda 下载的基本小部件示例。

现在我得到:

找不到文件“gdk-gc.ads”

事实上,我在 GNAT 或 GtkAda 存储库中都找不到这个文件。

Edit2:我仍然有困难。

Edit3:freenode#ada 上的其他人说 GtkAda 的 OpenGL 部分已损坏,许多人只是将其禁用。

0 投票
1 回答
285 浏览

gtk - 如何使用 GtkAda 创建文件选择器?

我正在尝试使用 GtkAda 创建一个应用程序,并且需要用户从他的 PC 中选择一个文件。但是,我发现没有办法在不导致此错误的情况下创建文件选择器:引发 PROGRAM_ERROR : unhandled signal。

使用 Glade 3.22.1

我尝试创建一个文件选择器按钮并将其链接到文件选择器对话框。它会导致同样的错误。


没有林间空地

我尝试在 GPS 中创建文件选择器对话框和文件选择器按钮,但同样的错误。

然后我找到了 Gtkada.File_Selection 包。它的描述说它自己处理信号并且只需要一个功能。可悲的是,它导致了同样的致命错误。

我正在开发 Fedora 29。GtkAda 2018 版、GPS 2018 和 GNAT 8.3.1。

Log_Filter_Handlers.ads

Log_Filter_Handlers.adb

Gtkada-File_Selection.ads

一旦应用程序创建了文件选择器小部件(无论是对话框还是按钮),在这种情况下通过调用 Button_Select_File_Clicked。它立即导致此错误: raised PROGRAM_ERROR : unhandled signal

我也有一些警告

谢谢你。

0 投票
1 回答
174 浏览

ada - 如何在 Windows 下分发 GtkAda 应用程序?

我在 Windows 上分发 GtkAda 应用程序时遇到问题。我制作了一个可执行文件(使用 Windows 本机编译器)并尝试在另一台 Windows 计算机上使用它。但是,我收到有关缺少 dll 的错误。

我尝试使用我的 .exe 三个文件夹进行分发。

  • bin包括 GtkAda 安装的 dll,
  • etc包括fonts,gtk-3.0pango,
  • lib也包括gtk-3.0dll。

这是我从GtkAda 文档中读到的

我想我可能忘了在项目文件中指定一些东西

这是我的 GPS 项目文件

我正在使用 gade (gtk 3.14) 文件和 GtkAda 2019。

谢谢你。

0 投票
1 回答
199 浏览

plugins - gtkada:使用 -fPIC 重新编译

(来自 comp.lang.ada 的交叉发布)

我正在使用 GTK 遵循 GNAT 示例中的插件方案。所以我需要 gtkada,并且为了正确处理它,gtkada_contributions。我从 Adacore 站点获取了(二进制)GNAT 和 gtkada 的实际版本(2020)。我从 Dmitry 的网站获取了 gtkada_contributions 源代码。

插件方案需要构建独立的可重定位库(在运行时加载)。因此,为了制作(在 Linux 上),我从终端调用:

我的项目文件 base.gpr 带有 gtkada_contributions_lib.gpr,这是原始项目文件,添加了以下内容:

上面的 gprbuild 命令现在产生:

...

以及许多其他类似的行。

将 -fPIC 添加到 gtkada_contributions_lib.gpr (编译器开关)并没有改变任何东西,所以我猜是 gtkada 甚至 gtk 必须重新编译。独自前进可能意味着数小时的无用工作,可能会破坏我的系统。

那么如何编译/链接我的项目呢?那么未来没有可重定位库的项目是否仍然可以编译和链接?

提前感谢您的任何提示。

0 投票
1 回答
1132 浏览

ada - GtkAda 简单窗口:找不到 pixbuf 加载程序或 mime 数据库

使用 Gnat-2020-Community 版本和 Gtkada 我尝试在 Debian 10.2 (x86_64 GNU/Linux) 上创建一个简单的 gui。

该项目基于“从模板创建项目”对话框中的 GtkAda 的“简单窗口”项目(我假设代码开箱即用)。

除了调整'with "gtkada";' 没有应用任何变化。到项目的 gpr 文件中 gtkada.gpr 文件的正确路径。

GtkAda 被正确检测到。该项目在静态和可重定位配置中均成功构建。

但是,程序无法成功运行,但在执行时会生成此终端输出 Win.Show_All;

我已经按照 Gtkada 的要求安装了以下软件包:libglib*, libgtk*.

此外,我还安装了libx11*and libncurses*,因为我觉得它似乎是有益的。

我已经在 stackoverflow 上搜索了互联网和 Gtkada 社区,但没有成功。

因此,我想向您,Stackoverflow 社区的 Ada 专家和大师请教一些想法或我缺少的东西。

提前谢谢了。此致。

0 投票
1 回答
140 浏览

ada - 你如何将事件监听器与 GtkAda Builder 连接起来?

在 GtkAda 20.1 下使用 GtkAda.Builder 时,我不知道如何捕获事件数据。

如示例所示,GtkAda_Builder 将只访问回调的两个原型,一个过程或一个函数,两者都将 Builder 作为参数。如何使用它来检查在 key_press 事件的情况下触发的事件?还是抽奖活动?在 testgtkada 或我发现的任何地方都没有处理这个问题的例子,我不知道该怎么做。这只是一个玩具课吗?

0 投票
0 回答
271 浏览

ada - 如何安装 GtkAda?

您好,我是使用 Ada 的初学者,我已经安装了 GNAT Studio,我真的很想创建一个简单的 GUI,但我不知道如何安装 GtkAda。我正在尝试在 Youtube 上看视频,但不幸的是,什么都没有。我也不太了解 docs.adacore.com 上的指南

0 投票
2 回答
250 浏览

button - 使用 GtkAda 单击按钮后如何更改标签的文本

我有这个代码,它有 1 个标签和 3 个按钮。如果我按下某个按钮,我想要的是更改标签的文本。如果我点击第一个按钮,标签文本将变为“Hello”,如果我点击第二个按钮,标签文本将变为“World”,最后,如果我点击第三个按钮,标签文本将变为“Hello World”。

我应该添加什么来实现这一点?