问题标签 [motif]

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 投票
0 回答
67 浏览

gcc - MOTIF GUI 编程

MOTIF GUI 编程!你好呀。我是 C 语言的 MOTIF GUI 程序员。经过较长时间的休息后,我遇到了 GCC 编译问题。我的 MOTIF 文件名为 winstack.c

编译运行良好。但是没有创建可执行的 LINUX 文件。除了名为 newprogram 的文件。上下文菜单中文件的属性是“共享库”而不是“可执行文件”。那是我的问题。从命令行使用 ./newprogram 没有问题。一个 GUI 窗口正在打开。在文件资源管理器中一键启动真正的 linux exe 怎么样???诚挚问候 SM

我遵循了 GCC 手册的描述。

gcc -o newprogram winstack.c -lXm -lXt -lX11

我希望一个 linux 可执行文件通过鼠标单击从文件资源管理器开始。

0 投票
0 回答
193 浏览

c - 在不使用 GTK 的情况下,在带有 X 的 Gnome 3 中启用客户端装饰需要什么代码?

返回用户这里。我需要将当前在 RHEL5、Gnome Desktop 2.x 下运行的 OpenMotif 2.3 应用程序系统迁移到 RHEL7 下的 Gnome 3。问题是这些应用程序需要修改窗口菜单,在每个窗口的基础上添加项目加速器。目前,我们的客户要求我们不要迁移到 GTK 或任何其他小部件集。客户安全要求需要使用 gnome-shell、gdm,因此 xfce 或任何使用外部进程进行屏幕锁定的东西都无法使用。

我查看了 gnome-shell 的混乱,虽然我找到了组合窗口菜单的 JavaScript,但它需要访问保存自定义菜单的窗口属性。我认为没有办法让 JavaScript 回调到 C 代码中来执行此操作。(如果一切都失败了,我可以使用 xprop 转储属性并从那里开始。)

我在想客户端装饰,以及必须自己管理窗口的所有恐惧,可能是这里的解决方案。不过,如果不使用 GTK,我似乎无法让 CSD 发挥作用。我尝试应用 _GTK_FRAME_EXTENTS 属性,但 gnome-shell 忽略它。我已经尝试过 _NET_FRAME_EXTENTS,但同样没有成功。Extended Window Manager Hints 文档对此只字未提。当然,Google 对使用 GtkHeaderBar 的评论和避免 CSD 的讨论已经成熟,这两者都不适用于这里。基于 Wayland 的物品同样不可行。

我非常熟悉修改和扩展 Motif 小部件集,在我职业生涯的大部分时间里都是这样做的。我需要知道如何告诉窗口管理器在不使窗口覆盖重定向的情况下关闭。

0 投票
0 回答
105 浏览

linux - .xpm 文件未加载

我已将 32 位 Motif 应用程序(从 SLES 10 SP1)移植到 64 位 SLES 12 SP3。由于专有库 (XRT),我被迫在 32 位平台 (SLES 11 SP3) 上编译并静态链接 Motif(XRT 已经静态链接)。这工作正常。

然后,我尝试在 SLES 12 SP4 上运行完全相同的二进制文件,除了呈现.xbm 文件之外,这也有效。请参见下面的示例图像,其中包含 (SLES 12 SP3) 和不包含 (SLES 12 SP4) 呈现的 .xbm 文件:

.xbm 文件呈现 .xbm 文件未呈现

我得到的错误是:

相关代码如下所示:

到目前为止我所做的没有成功的是:

  1. 比较了相关库的 SLES 12 SP3 和 SP4 之间的差异。
  2. 静态链接所有可能的库(一些库没有静态变体)。
  3. 检查 X11/Xt/Xm 的源代码。(Xm 和 Xt 的这部分交互,特别让我头疼。)

有任何想法吗?

0 投票
2 回答
72 浏览

c++ - 用于 Motif 库 (C) 的列填充 RowColumn 类?

我最近问了这个问题:Horizo​​ntally-Drawn RowColumn Class for Motif Library (C)?

在我之前的问题中,我无法让 xmRowColumnWidgetClass 水平绘制(逐行)而不是垂直绘制(逐列)。在玩弄它之后,想出了如何使用以下代码段切换到水平绘图:

因此,创建 xmRowColumnWidgetClass 实例的代码现在如下所示:

但是,我的新问题是,由于某种原因,XmNnumColumns 字段现在指的是行数,而不是实际的列数。在添加XmNorientation, XmHORIZONTAL部件之前,xmRowColumnWidgetClass 实例从左到右绘制对象,但它像预期的那样停留在 3 列。现在,它停留在 3 行,偶尔会创建一个我不想要的水平滚动条。我只想要垂直滚动。

所以我需要从上到下水平绘制 xmRowColumnWidgetClass 实例的子级,但我需要它每行最多只能放置 3 个,从而将其限制在一定的宽度内。

我尝试使用 XmNnumColumns 字段,但对更多孩子有用的东西对更少孩子不起作用,反之亦然。有时它变成 4 或 5 列而不是 3 列,有时它变成 2 列,而第 3 列完全为空。即使在尝试使用XmNpacking, XmPACK_TIGHT而不是XmNpacking, XmPACK_COLUMN其他东西时,我也遇到了很多这样的问题。

如果有人能够找到 xmRowColumnWidgetClass 的官方文档并链接它,那将不胜感激。


对于熟悉此库的任何人:

如何创建一个水平(逐行)绘制的 xmRowColumnWidgetClass 实例,同时保持一定数量的列?

它应该能够处理任意数量的子节点并根据需要添加尽可能多的行,以便将其保持为 3 列。


该库的另一组示例:
https ://github.com/spartrekus/Motif-C-Examples
https://github.com/spartrekus/Motif-C-Examples/blob/master/rowcol.c

0 投票
1 回答
65 浏览

c++ - Motif 如何计算或检索字体像素大小?

我正在尝试在 Motif 中编写代码来更改对话框警告框以调整其大小,如果框不够宽。宽度和高度始终由调用类设置,并且它并不总是足够宽以显示消息并且行尾被截断。他们不想到处固定以使用自动调整大小(即宽度为 0 或根本不设置),而是想弄清楚对话框中字符的像素宽度大小是多少。然后,他们可以乘以最长的线 X 像素宽度来获得以像素为单位的线长度。然后我们将查看是否需要重置对话框声明的宽度以停止截断。只有太短的对话框才会被更改(太宽的对话框不会被更改)。

然而; 我找不到任何关于如何在任何地方获取以像素为单位的字符宽度的示例。我记得几年前我在一个项目中,他们创建了某种类型的小部件,将一个字符插入其中,然后执行 XtGetValues 来获取宽度和高度,所以我认为可以完成。那么有人知道该怎么做吗?

0 投票
1 回答
57 浏览

c++ - Motif - c++ - 具有两种类型的按钮和回调的菜单栏

我正在开发一个应该翻译用户输入的项目,但这不是问题。事实上,我是 libmotif 的新手,我想要一个切换按钮来选择翻译方式(法语到意大利语或意大利语到法语)。因此,我在这个菜单栏上已经有一个级联按钮,我收到了这个警告:警告:名称:main_list 类:XmRowColumn Attempt to add wrong child type to a homogeneous RowColumn widget

警告:在 XtAddCallback 中找不到回调列表

此外,我可以将切换按钮放在其他功能的参数中以查看他的状态吗?

0 投票
0 回答
34 浏览

x11 - 需要从 XtAppContext 获取顶级小部件

我正在寻找类似的东西,XtWidgetToApplicationContext()但它会以相反的方式工作从其应用程序上下文返回顶级小部件。有这样的功能吗?一般来说,如何从拥有应用程序上下文中获取小部件?

0 投票
1 回答
30 浏览

c - 如何将 Esc 映射到 Motif 小部件中的操作

这个最小的示例创建了一个带有按钮小部件的 Motif 窗口。

两者Esca都映射到相同的动作, ArmAndActivate,但小部件仅响应a按键,而不 响应Esc我怎样才能让它响应Esc请注意,这 Escape确实是根据xev.

0 投票
0 回答
35 浏览

c - 编译基本 OptionMenu 示例时分配给“Widget”的不兼容整数到指针转换

我正在尝试使用 OptionMenu Motif Widget 编译一个基本窗口。

这是我尝试过的:

这是我得到的编译警告,我不知道它为什么给出它:

当我尝试执行它时,它会生成一个核心转储:

因为我总是编译没有警告的东西,所以我想了解为什么会出现该警告并首先摆脱它。

编辑:

xmcreateoptionmenu如评论中所述,添加修复问题的手册页中指定的 <Xm/RowColumn.h> 。

另外,生成选项菜单的代码是错误的,我附上正确的。请注意,没有为小部件分配标签:

0 投票
1 回答
55 浏览

unix - 如何在 Xt/Motif 中创建两个顶层窗口?

要创建示例顶层窗口,可以完成以下代码。这显示在文档和 Motif 书籍中(具体来说,此示例基于 Marshall Brain 的“Motif Essentials, Programming and More”)。

但是,我找不到如何实现两个窗口,如果我的应用程序想在顶部打开'n'个独立窗口,该怎么办?

X11甚至可以吗?(我认为这个问题可能与 Xt 库有关,而不是与 Motif 相关)。

如果是这样,有人可以指出我的示例或文档以了解如何操作吗?