问题标签 [lablgtk]

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 投票
2 回答
479 浏览

gtk - 如何阅读此 OCaml 类型签名?

我目前正在尝试同时使用 OCaml 和 GTK(使用lablgtk绑定)。但是,文档并不是最好的,虽然我可以弄清楚如何使用大多数功能,但我仍然坚持更改笔记本页面(切换到不同的选项卡)。

我找到了我需要使用的功能,但我不知道如何使用它。该文档似乎表明它位于 的子模块中GtkPackProps.Notebook,但我不知道如何调用它。

此外,这个函数的类型签名与我以前见过的任何不同。

我认为它返回 a GtkSignal.t,但我不知道如何将第一个参数传递给函数(括号中的整个部分)。

有没有人有一些示例代码显示如何更改笔记本页面,或者可以给我一些关于如何做到这一点的提示?

0 投票
1 回答
408 浏览

user-interface - OCaml-Wodi:安装 Lablgtk2?

我一直在尝试在我的 wodi32 cygwin 上安装 lablgtk2,因为软件包环境最初没有附带 lablgtk(只是 lablgtk)。

我按照这些指示自己手动完成:

但它似乎无法正常工作。有没有这样做的 Wodi 方法?

0 投票
3 回答
1011 浏览

user-interface - OCaml + LablGTK2:多行文本框

我试图弄清楚如何在图形小部件中实例化多行文本框。LablGTK2 似乎在文档方面非常有限,并且 API 对于开始看起来像我想要的东西来说是稀缺的。

我已经开始交叉引用原始 GTK2 文档https://developer.gnome.org/gtk3/stable/gtkobjects.html与 Lablgtk2 文档http://wwwfun.kurims.kyoto-u.ac.jp /soft/lsl/lablgtk/html/GText.html

但是,我发现的最好的教程或简单/清晰的示例使用了非常有限的单行文本输入框: http: //plus.kaist.ac.kr/~shoh/ocaml/lablgtk2/lablgtk2-tutorial/x1155。 html

我发现一些清晰简单的派生示例非常适合学习基础知识。有没有人有示例小插图显示如何使用 OCaml & Lablgtk/lablgtk2 设置多行文本?或者对于将展示开发多行文本框(这是任何基于 GUI 的程序中非常重要的功能)的教程的更好建议?理想情况下,我想将这个多行文本中的文本输入连接到我编写的 OCaml 模块,该模块将处理该文本,然后 GUI 将在 GUI 上显示该处理结果。任何帮助将不胜感激。

0 投票
1 回答
379 浏览

plugins - 如何为我的 OCaml 程序创建 GTK 插件 (cmxs)

我想为我的 OCaml 应用程序制作一个 GTK 插件,使用 Dynlink 加载。如何让 ocamlbuild 在生成的插件中包含 lablgtk2 库?

作为测试,我有main.ml

gtk_plugin.ml

_tags

但我得到:

注意:主二进制文件不能依赖于 libgtk(可能没有安装在目标系统上) - 如果插件无法加载,我想退回到控制台模式。

0 投票
1 回答
106 浏览

gtk - 如何使用lablgtk2编写实现MVC的新小部件?

我正在为 lablgtk2(Gtk+ 的 OCaml 绑定)编写一系列新的小部件。GTree其中一些小部件可以编辑或呈现相当复杂的信息,因此我对使用模型视图控制器或主题观察器感兴趣,类似于在模块中可以找到的。

这个模块定义了一个GTree.model和一个GTree.view类,每个都有可以连接的信号,并且一个GTree.model可以附加到一个或多个GTree.view's。

在纯 OCaml 中模仿这种组织并不是那么简单,因为库中可用的代码是 C 库的绑定。我需要完成以下步骤:

  1. 定义新的小部件
  2. 定义新信号
  3. 触发这些新信号
  4. 定义新模型

我可以通过 1 和 2,但我不确定如何执行 3 和 4。如何正确执行这些操作?

定义新的小部件

新小部件的定义本身没有问题。新的小部件通常是 Gnome 画布的专用版本或组合。在前一种情况下,我们的新小部件可以作为 GObj.widget 从 Gnome 画布继承,而在后一种情况下,我们可以使用容器提供的 GObj.widget 来保存组合。这通常看起来像

定义新信号

绑定为定义新信号的代码提供了大量示例,因此我们可以为我们的小部件定义新信号,如下面的片段所示,考虑到没有参数的信号的简单情况:

通过这些定义,我们的view小部件可以通过定义适当的connect方法来公开这些信号:

触发新信号

该函数似乎GtkSignal.emit用于向对象发出信号,触发注册的回调。这起到以下签名的作用:

前两个参数是不言自明的,但还不清楚剩下的两个参数是什么。不幸的是,lablgtk 源代码中没有使用示例,因为信号是从代码的 C 端发出的。这两个参数似乎与信号参数的准备有关,具体化为 a'c Gobject.data_set array以及使用标记为 的参数检索产生的值~conv。尽管如此, -~cont参数在发射器中的作用仍然需要清除。

定义新模型

模型定义中的棘手部分是它应该继承自GObj.object以便能够发送接收信号。不幸的是,没有允许直接定义最小 Gtk+ 对象的函数。我朝这个方向走的最远的是

调用该函数model来实例化相应的对象会产生以下消息:

Gtk-CRITICAL **: IA__gtk_object_sink: 断言 'GTK_IS_OBJECT (object)' 失败

显然,这里有些可疑之处,很可能是参数列表(上面代码片段中的空列表)太小了。

0 投票
0 回答
95 浏览

shell - 是否有与 lablgtk 兼容的终端小部件?

早上好,

我正在labgtk中实现一个软件,我想在界面中嵌入一个类似终端的小部件,类似于嵌入在gedit中的终端(例如:http ://www.linuxnov.com/wp-content/uploads/2011 /04/embedded-terminal-gedit-plugin.png)。但是类似终端​​的小部件必须只响应来自软件的特定命令,而不是来自操作系统中存在的命令。

我没有找到可以直接执行此操作的 lablgtk 小部件,我只找到了vte,它没有在 Ocaml 中实现(而且我从未使用过该小部件)。

我的问题是:有没有办法在 lablgtk 应用程序中嵌入终端/控制台小部件?

提前致谢!

0 投票
2 回答
316 浏览

exception - Lablgtk 回调中的异常

在 Lablgtk 中,每当回调中出现异常时,都会自动捕获异常并在控制台中打印错误消息,例如:

这没有提供堆栈跟踪,也没有关于异常的详细信息,并且由于它被捕获,我自己无法检索此信息。

我可以为这种情况启用更详细的日志记录信息吗?或者防止异常被自动捕获?

0 投票
1 回答
276 浏览

gtk - lablgtk中Gdk.Window、GtkWindow和GWindow的区别

在 Lablgtk 中,有(至少)三种类型的窗口命名模块:

  • Gdk.Window
  • 窗口
  • 窗口

它们之间有什么区别,我该如何从一个转到另一个?

0 投票
1 回答
176 浏览

gtk - 在 lablgtk 中检测 Ctrl+click 事件

这个问题解释了如何在 pygtk 中检测 ctrl+click。

它也适用于 Lablgtk 吗?或者有更简单的方法吗?

0 投票
2 回答
725 浏览

gtk - 函数应用于 lablgtk 中的太多参数

我需要一些帮助来理解为什么以下代码无法编译。我正在尝试将 GSourceView2 放置在 lablgtk 的垂直框中。我已经改编了这篇Ocaml 文章中的代码

我得到的错误有点神秘:

但是,我可以改为创建一个 GButton 并将其 pack 参数设置为将其放置在 vbox 中。GButton.buttonGSourceView2.source_view的签名似乎非常相似(许多可选参数后跟一个单位),所以我不太确定我错过了什么。对我所缺少的任何帮助都会非常有帮助,因为我对这种语言还是很陌生。