问题标签 [gobject]

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

c++ - GStreamermm:通过从 Gst::Element 派生来创建新的元素类型(在插件中)

在插件中创建新元素类型的标准方法是 GstElement 类型的 gobject 样式“派生”,具有所有这些 gobject 魔法,就像这样

我正在用 C++ 编写一个项目,它使用 GStreamer 和一些专门用于我的目的的元素。我已经按照上面提到的方式编写了几个插件,但我对代码并不满意,因为它太多只是为了满足 gobject 的要求。

我考虑使用 gstreamermm。是否可以使用从 Gst::Element 派生的 C++ 风格派生来创建新类型的元素?我的意思是:

这将是更漂亮的解决方案(假设我已经在插件中使用 gstreamermm 和 C++)。当然我们需要一个真正的 gobject 类型,它有唯一的类型 id 等等。

0 投票
1 回答
1108 浏览

python - 如何为基于 glib/gobject 的库创建 python 绑定

我想为基于 glib/gobject 的库创建 Python3 绑定,即infinote/libinfinity

我对完成此操作的必要步骤感到有些困惑。PyGObject在这里帮助吗?本指南对 python3 和 PyGObject 仍然有效吗?
如果没有,我需要阅读什么来了解这将如何工作?
是否有任何工具可以(半)自动化该过程?

0 投票
2 回答
8664 浏览

gtk - GObject Gtk、Gnome、Gtk+、Gl、Gtk2、Gtk3……我不明白?

我需要一些窗口来托管 webkit 或/和 cairo drwaing,但我必须首先处理所有这些以了解我在做什么。

现在。我迷路了,不再明白那是怎么回事。

当我尝试使用绑定或试图弄清楚某些东西的依赖关系时,情况会变得更糟。例如:在 python 中,pyGtk 已弃用并被 pyGObject(有时称为 pyGl !!)

有许多站点,许多下载和版本,混合了过时的和新的参考,但没有一个整体的架构视图

我不明白..所有这些东西是如何在太多的网站、包和版本中相互混合的?

0 投票
4 回答
6622 浏览

c++ - 为什么要创建 GObject 系统?

简介

好的,所以在GTK+ 0.60 版本之后,设计人员意识到为了未来的发展和进步,需要将整个工具包重写为面向对象。

现在,由于 C 不支持 OOP,为了提供面向对象和继承层次结构,他们创建了GObject System。现在创建 GObject 系统肯定需要开发时间、更多的依赖项、更多的问题,但他们必须创建它来为C编程语言提供面向对象的能力。但当时,有另一种解决方案正好提供了C++

问题

为什么 GTK+ 的开发者不直接使用 C++?

说明

我的意思是,为什么要浪费时间创建整个库而不是使用许多项目采用的经过时间考验的解决方案?不要误会我的意思,我不是想把这篇文章变成 C 与 C++ 的东西(我在论坛上已经受够了,谢谢)。我只是想知道让 GTK+ 的设计者做出决定的原因和问题。

0 投票
0 回答
402 浏览

python - python GTK中没有回溯的浮点异常

我有一个正在开发的 GTK python 程序。我需要根据用户正在进行的活动类型来更改窗口的外观。我正在使用一个 Gtk.Grid() 对象,我计划只在需要显示的内容上调用 widget.hide() 并在需要显示更改的内容上调用 widget2.show()。我从来没有做过这样的事情,并且正在尝试。

GUI界面的一个例子是这个

当我单击按钮时,调用我创建的调用 Label1.hide() 等的可迭代对象。该界面是一个水平 Gtk.Box(),左侧是标签网格,右侧是按钮对象.

当我到达最后一个 Label3 然后单击“按钮”按钮时,程序意外退出,输出如下:

没有追溯。我认为它来自 GTK 本身。我正在使用使用 gobject 内省的 GTK3。

什么可能导致异常,有没有办法解决?

我相信我可以通过在乘坐最后一个 (Label3) 对象之前执行 Label4.show() 来解决这个问题。我只是好奇首先是什么原因。

我已经做了很多谷歌搜索,但似乎没有解决这个问题。

谢谢,

纳尼

0 投票
1 回答
438 浏览

gstreamer - GObject 警告无法注册现有类型

我是 GStreamer 用户/程序员,但我从未直接使用过 GLib。最近我决定使用 GLib 来构建一个简单的 GObject 并利用信号实现。(我是 Windows 程序员)

我已经开发了一个带有 GObject 定义和实现的简单静态库。主应用程序与该库静态链接,并与与第一个静态链接的其他库动态链接。

如果我打电话

DummyObj *dummy = (DummtyObj *) g_object_new(DUMMY_OBJ_TYPE, NULL);

从主应用程序它可以工作,但是如果在动态库中我尝试使用相同的功能构建一个 DummyObj 实例,它会失败,在输出中我可以读取

无法注册现有类型... g_once_init_leave_ 断言“初始化值!= 0”失败 g_object_new:断言“G_TYPE_IS_OBJECT (object_tye)”失败

相反,如果是动态库第一个调用 DummyObj *dummy = (DummtyObj *) g_object_new(DUMMY_OBJ_TYPE, NULL); 如果主应用程序调用此函数后,它会失败并出现相同的错误。

好像是第一个上下文?初始化对象是唯一可以创建此类对象实例的对象。

我对此有点困惑。在 GStreamer 中,我可以在我的主应用程序、其他插件、动态库中创建新插件,我从未见过这些错误

我希望我已经解释得很好,英语不是我的母语,我认为这个问题不容易解释。

非常感谢

似乎在每个上下文中第一次调用 g_object_new 都会尝试在 hash_table 中注册 TYPE。第一个可以注册 TYPE 但第二个总是失败并出现相同的错误。查看代码我无法检测到为什么第二次调用尝试再次注册类型... gtype.c 中的函数 check_type_name_I 失败但我不知道为什么在这两种情况下都调用 g_type_register_static 。

0 投票
1 回答
547 浏览

javascript - 使用 Gnome-Shell JS 接口获取联系人列表

我刚刚开始摆弄编写 gnome-shell 扩展,并且想知道如何获取用户拥有的联系人列表。

我已经找到了一些可能的文件:gnome-shell/js/ui/contactDisplay.jsgnome-shell/src/shell_contact_system.c.

现在我注意到shell_contact_system.c以下函数:

这表明在 javascript 界面中我可以使用函数(我的信念被文件也有 a并演示了使用get_all的事实加强了),所以我尝试:.cshell_contact_system_get_individualcontactDisplay.jsShell.ContactSystem.get_default().get_individual

有用!(我正在 Gnome-shell 的“镜子”javascript 解释器中尝试它)。

它似乎是一个“Gobject”,所以我不知道如何处理这个对象来获取我的联系人姓名。我注意到(从 C 代码)这个对象是 a GeeMap *,所以查看Gee.Map 的文档,我发现我可以执行以下操作:

然后我尝试查看contacts.valuesand contacts.key,并注意到这些to_array()方法具有:

但是,当我这样做时,我会得到一个空数组contacts.xxx.to_array().size是 0,但是contacts.size是 31 吗?!!

当我尝试使用 acontacts.map_iterator()遍历地图时也会发生同样的情况;it.get_value()并且it.get_key()似乎为空。

所以,我的问题是:如何访问 的各个元素contacts

我确实注意到评论shell_contact_system_get_allReturns: (transfer none): ...while shell_contact_system_get_individualsays Returns: (transfer full): ...,并且后一个功能有效(前提是我知道我要查找的个人的 ID,这是我的问题),而前者没有。这可能与它有关吗?

此外,作为一种解决方法,我目前可以使用contactSearchProvider该类来实现这一点(当您安装gnome-contacts可以键入联系人姓名的位置时,概览将使用该类,它们将出现在概览中)。我基本上搜索''哪个应该返回我每个联系人的列表。不过,这似乎是迂回的-我觉得我应该能够使用该get_all()方法来获取所有联系人,而无需搜索空字符串...

任何帮助将不胜感激(顺便说一句,是否有任何关于此的文档?当我盯着源代码并尝试从中推断出所有文档时,我感到非常不合适!)

0 投票
1 回答
1077 浏览

memory-management - 何时释放 GObject?

何时取消引用 GObject 以及何时释放它?GObject 教程指出 GObject 应该是 unrefed释放的,但是当且仅当它的 refcount 下降到 0时
, GObject 不应该真正释放自己吗?

0 投票
1 回答
276 浏览

gtk - GObject 是否在 GNOME 之外大量使用?

我了解 GObject 最初是 gtk+ 的一部分,后来与 GUI 相关元素分离。我想知道的是:它在 gtk+ 之外使用?其他桌面环境和其他操作系统(如 Windows 或 Mac OS)呢?有没有这类案例的突出例子?

0 投票
1 回答
3850 浏览

c - Vala 和 Genie 的生产准备好了吗?

我正在使用一些遗留的 C 代码,我需要对其进行重构和清理,以删除意大利面条式编程,遵守 DRY 原则等。

我正在考虑使用 C++ 重写,但我不想走那么远,并且希望尽可能地接近 C(同时使用一些 OOP 概念 [无需手动编写代码])。

我最近遇到了 GObject、Vala 和 Genie。后两个是相当新的。有没有人知道 Vala 或 Genie 被用于生产代码?

最后但并非最不重要的一点 - 是否有两种语言之间的优缺点比较列表。我有点倾向于 Genie,因​​为我喜欢 Python 并且不太热衷于 C#,但是 Genie(显然?)坚持使用选项卡在实践中可能有点烦人 - 我会对两种语言(假设其中一种或两种都可以用于生产)。

顺便说一句,我正在 Linux 上开发,所以就我而言,任何与 Windows 相关的问题都无关紧要。