问题标签 [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.
sml - PolyML/Motif:如何同时绘制一个包含 XmLabelPixmap 按钮的窗口?
在 PolyML 中,我试图在其中绘制一个带有像素图的按钮,但在外壳小部件上调用 XtRealizeWidget 之前找不到创建像素图的方法。
在 XtRealizeWidget 之后使用 XCreateBitmapFromData,在绘制带有图片的按钮时会产生巨大的延迟,这真的很愚蠢。也就是下面的代码。
相关线路是:
我认为我应该做的是让整个窗口(包括图片)同时显示,是在 XtRealizeWidget 之前调用 XtSetValues 。我无法完成这项工作。XGetWindowRoot 的调用或任何类似的调用都不起作用。错误类似于:XGetGeometry 中的 X 错误 BadDrawable
谁能告诉我如何创建一个窗口,其中包含一个带有像素图的按钮,以使所有内容都同时绘制?
剩余代码:
c - 没有定义实现类过程
我只想分享我如何找到错误的解决方案
没有定义实现类过程
运行 X/Motif C 应用程序时。我发布这个是因为我在网上搜索时只找到了一个关于这个问题的参考,并且它没有包含任何解决方案。
我设法解决了这个问题,如果你再次遇到这个问题,我想分享我的发现(注意:我并不是说我的解决方案总是能解决这种类型的错误)。
问题
我在运行一个使用 Motif 和 X Intrinsics 工具包的简单 C 程序时发现了这个问题。
C源代码如下:
python - 用于解析 fasta 文件的 while 循环
我被分配了一个以前没有编程经验的项目的任务。它要求使用 while 循环、增量和 boo 创建一个主题查找器。我相信我走在正确的轨道上,但非常不确定,因为我没有编程经验。任何人都可以帮助我找到我的错误并告诉我我需要做什么来纠正它们。再次,我是一个生物学家,被要求接受这个并且
我需要一些帮助。
c++ - Qt MenuBar 用主题风格突出边框
我有一个使用主题样式(Qt 5.3)的带有两个子菜单的 QMenuBar。遵循这种情况时,QMenuBar 周围会出现一个黑色边框(下面的示例代码):
- 单击子菜单“Foo1”
- 单击子菜单“Bar1”
单击“Bar1”后出现边框。这似乎是一个亮点或焦点边框。用鼠标移动窗口时边框会消失,但移动完成后会返回。
menubar1 上的黑色边框图像:
我想知道如何摆脱这个边框,如果可能的话不使用样式表,因为使用样式表会清除主题样式。
这是示例代码:
c - XmStringGenerate() 在 XmMULTIBYTE_TEXT 或 XmWIDECHAR_TEXT 模式下
我正在尝试使用XmLabel
服务器端 XLFD 字体 ( ) 来显示一些 Unicode(实际上是西里尔文-monotype-arial-medium-r-normal--*-90-*-*-p-*-iso10646-1
)。每当我使用XmStringCreate()
或XmStringCreateLtoR()
作为XmString
工厂时,结果都符合我的期望。
但是,当我尝试使用XmStringGenerate()
工厂时,无论XmMULTIBYTE_TEXT
是多字节 Unicode 字符串还是XmWIDECHAR_TEXT
宽字符串,无论使用什么字体,都会在屏幕上呈现垃圾(我尝试了UTF-8
单字节西里尔文服务器端字体)。
结果如下所示(第 1 2 行没问题,第 2 到第 6 个标签是用创建的XmStringGenerate()
,显然不是ok):
完整的代码(需要 Motif 2.1+ 和符合 C99 的编译器)在这里。
任何人都可以建议一个XmStringGenerate()
适合显示Unicode字符(不仅仅是ISO-8859-1
)的工作示例吗?
c++ - XWindow 不听自己的属性/窗口管理器
问题: 我在 Linux 系统的 Window Manager C++ 文件中有一个由 XWindows 控制的 java 窗口。某处存在错误,如果您连续(并且快速)大约打开 HCI 7-35 次,通常至少一次窗口在其默认位置(0,0)而不是我设置的位置(430、300)打开)。如果我关闭 HCI 并重新打开它失败后,它会在正确的位置打开,就像它在错误之前一样。这些属性最初是使用 XMoveResizeWindow 设置的。
我添加了一个循环来检查 HCI 的位置(通过 XTranslateAttributes 和 XGetWindowAttributes),并将 X 和 Y 与设置的位置进行比较,如果它们不匹配则重置属性。
但是,当我打印它显示的属性时(430、300),即使窗口实际上在 (0,0) 处打开也是如此。
具体问题: 这是 XWindows 的错误吗?属性读取一件事是否有意义,但它与实际位置不匹配(即这些属性可能是建议,而不是要求)?是否有其他方法可以返回更准确的 HCI 位置?
更新:我尝试更改循环以通过 XMoveWindow 连续移动位置 15 次。它似乎已经修复它(尚未完成测试)。但肯定有比蛮力更好的方法。
c++ - 设置对话框窗口的边框颜色
这里的根本问题是:如何设置窗口(更具体地说,对话框窗口)周围边框的颜色?
我有一个对话框窗口,它会弹出一个警报。由于警报的关键安全性质,要求窗口的某些部分是红色的,包括对话框的窗口边框。当我提出这个要求时,我认为这是一个好主意。看起来很合理也很简单。
该应用程序使用 X/motif 作为其图形。我首先将其他请求的部分设为红色,例如确认按钮。通过更改图形上下文和颜色资源来完成其他所有工作都非常简单。
然而,对话框的边界一直很痛苦。有一个 XmNborderColor 资源,所以我尝试更改它。它似乎没有用。最终,在尝试为不同的小部件(框架和它的祖先)设置它之后,我绝望地做了以下事情:
我这样做只是为了将它设置在从按钮到根目录以及介于两者之间的所有内容上。
在做了更多研究之后,我意识到我可能需要更改窗口属性,例如 via XChangeWindowAttributes(display, window, mask, values)
。值的结构包括 a border_pixel
,我假设它是边框颜色,但无法找到确认 - 文档只是说它用于设置“边框像素”。幸运的是,有一个方便的函数可以只设置边框像素,这样您就不需要传递整个值结构;只改变边界像素的便利功能是XSetWindowBorder(display, window, border_pixel)
.
所以我想尝试一下。我现在有:
shell
用以下函数在别处设置:
从代码的另一个地方看,它看起来window
可能是对根窗口的引用——也许这就是问题所在?
我对缺乏这方面的信息以及找到直接答案的难度感到惊讶。
如何设置边框颜色?如果我应该使用XSetWindowBorder()
,我做错了什么?如果是因为我的window
变量可能没有引用正确的窗口,我如何在知道外壳和包含的小部件的情况下获得对正确窗口的引用(如果这个问题没有得到牵引力,也许我应该从这个问题中提出一个单独的问题)?
c - 特定于语言环境的 XFontSet 扩展
在我的 Motif 应用程序中(源代码在这里,需要 Motif 2.1 + ( -lXm -lXt -lX11
) 和符合 C99 的编译器;在Cygwin上应该另外链接-liconv
),我试图XFontSet
从与编码无关的XLFD转换一个实例(如-monotype-arial-medium-r-normal--*-90-*-*-p-0-*-*
)正确扩展为与当前语言环境匹配的多个单独XFontStruct
条目(...-iso8859-1
、...-iso8859-5
、...-iso10646-1
等)。
我发现在某些语言环境 ( en_US.UTF-8
, ru_RU.ISO-8859-5
) 中,XFontSet
扩展效果很好,而在其他语言环境 ( ru_RU.UTF-8
, ) 中ru_RU
却没有(字体集中的个别字体不合适),导致平面上的字符以外的字符Latin-1
呈现不正确。
问题:
- 如何排除 Motif 或 X11 客户端库 (
libXt
,libX11
) 作为主要嫌疑人? - 特别是,(如何)我可以在不依赖 Motif 的情况下使用字体集 (
XFontSet
) 而不是常规字体 ( ) 显示文本标签——最好使用 Athena 小部件集?XFontStruct
- 说到普通
libX11
API,我的理解是否正确我应该尝试XmbDrawString() 和 XwcDrawString()系列函数?
如果您有其他评论,请注册。代码,它不直接回答上述问题,但可以帮助追查问题——这些是受欢迎的。
TL;DR 版本
无论当前的语言环境如何,我都对正确显示西里尔文特别感兴趣,前提是:
- X11 支持语言环境,并且
- 西里尔文可在语言环境的字符集中表示。
这给我留下了以下语言环境列表:
ru_RU
;ru_RU.ISO-8859-5
(应该与 ru_RU 相同,但不是,见下文);ru_RU.KOI8-R
;ru_RU.CP1251
;ru_RU.UTF-8
;en_US.UTF-8
以及任何xx_YY.UTF-8
.
ru_RU
, 在不失一般性的情况下, 可以很容易地替换为uk_UA
,be_BY
或bg_BG
.
在我的测试代码中,我正在XmLabel
使用由不同XmStringCreate*()
/XmStringGenerate()
工厂方法生成的标签创建实例。
Motif 2.3.4通常显示出具有西里尔字母的能力,但有一些例外(或关于 Motif 2.1的回归)。我不确定回归是源于 Motif 本身 ( libXm
) 还是 X11 客户端库 ( libXt
, libX11
)。X11 字体路径在所有测试中都相同,因此不应责怪特定的 X 服务器或 X 字体服务器。
基本上,我在使用 Motif 2.3.4时发现了两个问题:
ru_RU
语言环境支持
在语言环境中获得的参考渲染ru_RU.ISO-8859-5
:
如您所见,无论XmString
使用何种工厂,完整的俄语字母都可以正确显示。
在这三种情况下,应用程序都将XFontSet
实例的内容打印到标准输出:
现在,在ru_RU
语言环境中启动了相同的应用程序。主题2.2:
由于某种原因,XFontSet
只包含KOI8-R
字体而不是ISO-8859-5
字体:
主题2.3:
在这种情况下,没有渲染任何内容,但XFontSet
包含的字体比实际需要的多:
这是与 Motif 2.1.0相比的回归(2.1.30及更高版本受到影响)。
ru_RU.UTF-8
语言环境支持
在语言环境中获得的参考渲染en_US.UTF-8
:
除了XmString
在 8 位模式下测试的 3 个工厂外,还进行了XmStringGenerate(XmMULTIBYTE_TEXT)
额外测试。XFontSet
包含以下条目(实际上XFontStruct
是 Monotype Arial 字体的所有可能条目):
现在,在ru_RU.UTF-8
语言环境中相同:
XFontStruct
尽管XFontSet
instance 包含所有必要的条目,但似乎使用了不正确的XFontStruct
条目:
更新:事实证明,在ru_RU.UTF-8
语言环境中,LANG
环境变量应该受到指责(空的LANG
orLANG=C
或LANG=en_US.UTF-8
,西里尔字母显示正确),而LC_ALL
可以安全地设置为ru_RU.UTF-8
.
这是与 Motif 2.2相比的回归(2.3.0及更高版本受到影响)。
c - Motif 1.2 X11 在 ScrolledWindow 中使用 RowColumn 小部件
我有一个 Motif 客户端(在 Linux 上运行它)。客户端以表格方式向用户显示一组按钮。显而易见的选择是 RowColumn 小部件。我想要按钮数组周围的滚动条,所以我创建了一个 ScrolledWidget 并将 RowColumn 小部件放在里面。我还在行列小部件周围放置了一个框架小部件以使其脱颖而出。
现在,问题。我想在 Quit 小部件数组之外放置一个按钮。问题是它没有显示按钮。这是可行的吗?
任何执行此操作的示例代码表示赞赏。
java - JSplitPane LookAndFeel Motif 减少按钮或拇指
我看这个问题之前问过:
JSplitPane setOneTouchExpandable(true) 未显示
我测试了我的代码,但是当 LookAndFeel 是 Motif 时,我无法拖动 JSplitPane。
我正在测试,我有我的图像:
Linux:
苹果电脑:
问题:
如何减小 JSplitPane 的(左右)“三角形”的大小?
为什么JButton 不保留preferredSise?