X-Designer

作者:Timotej Ecimovic

X-Designer
  • 制造商:Imperial Software Technologies (IST)

  • 电子邮件:sales@ist.co.uk

  • 网址:http://www.ist.co.uk

  • 价格:3445 英镑(商业单用户)

  • 平台:几乎任何 Unix/X 平台,包括 Linux

  • 评测人:Timotej Ecimovic

X-Designer 是一款最先进、屡获殊荣的 GUI 构建器,可在大多数 Unix/X 工作站上运行。它为 OSF/Motif 部件集生成原生代码,源代码可以是 C、C++ 或 UIL(Motif 用户界面语言)。它不仅适用于 Motif,还可以生成可在 Microsoft Windows 平台上编译的代码,使用 MFC 类库作为 GUI 元素。听起来很有前景,不是吗?我手头的版本是X-Designer 4.6 发行版:Java 版——它也可以生成 Java 代码。

安装

自然地,当我打开时尚的包装盒,准备在我的 PC 上安装这款昂贵的软件时,我的兴奋感也随之增长。在包装盒内,我找到了一本名为“安装和发行说明”的小手册、一本 840 页的大书,书名为“4.6 发行版用户指南”、一些广告和许可材料、两张参考卡和一张包含该软件的白色 CD-ROM。

目标 PC 是一台 100MHz 奔腾处理器,配备 16MB 内存和 16 bpp XFree3.2 服务器,用于带有 2MB 内存的 ATI Mach64 图形适配器。这对于 X-Designer 来说绰绰有余。PC 磁盘上安装的 Linux 是 Slackware 3.0 发行版,内核版本为 2.0.0。我没有 Motif,只有免费提供的 lesstif 0.81 版本库。毕竟,X-Designer 手册声称运行构建器不需要 Motif,只有创建的应用程序才需要 Motif 1.2 版本,而不是更新的 2.0 版本。

安装过程流畅且无故障。一旦 CD-ROM 被挂载,如果 ISO 9660 Rock Ridge 扩展得到支持,X-Designer 就可以在演示模式下运行。安装是通过单个 Install 命令完成的,其中唯一强制性的规范是 LINUX 发行版文件的位置(例如,/cdrom/LINUX)和目标目录(在我的例子中是 /usr/local/xdesigner/)。安装大约占用了 21MB 的磁盘空间,并且以稳健而直接的方式完成。没有花哨的安装选项,但您可以信赖它的成功完成。

安装完成后,X-Designer 仍然只能在演示模式下运行,该模式不允许保存设计或生成任何代码。我继续阅读安装手册的许可部分。要获得许可,必须使用提供的程序计算一个特殊的 host ID,并通过电子邮件发送给 IST 以请求许可。支持人员在几分钟内做出了回应。使用关于设置许可证文件和运行提供的 IST 许可证守护程序的非常好的手册章节,从我开始安装到 X-Designer 全功率运行,用时不到 30 分钟。

基本功能

图 1. 主窗口

用户界面很有吸引力,并且是为程序员设计的,而不是为那些看到每个弹出的华丽图标都会“哇”的用户设计的。帮助文档就在那里,这对于任何 Motif 应用程序来说都应该是这样。默认情况下,XD/Help 浏览器会在帮助请求时启动,但可以选择使用 Netscape 或任何其他浏览器来达到相同的目的。我更喜欢提供的 XD/Help 实用程序,因为 Netscape 提供了相同的功能,但与小型 XD/Help 甚至 X-Designer 本身相比,它无情地消耗系统资源。帮助文档全部是文本模式,但我相信,在使用 X-Designer 一段时间后,对在线帮助的需求会慢慢消失。没有提供 Motif 编程信息,部件的描述也很简短。在认真使用 X-Designer 时,应该有一本 Motif 参考书在手。我相信帮助系统很好地服务于其目的,并且设计时采用了正确的假设,即高级用户不需要大量的彩色图表、示例和技巧,而只需要快速提醒一下正在发生的事情。

2641f2.gif

图 2. 帮助实用程序

主窗口的工作区提供了部件实例树结构的清晰显示。由于部件树对于较大的应用程序可能会变得很大,因此提供了许多选项来使大部分设计保持在视觉范围内。分支可以折叠,部件的图标可以设置为较小的尺寸。树可以左对齐,特殊的注释位图可以放置在部件旁边,以视觉方式提醒用户它们的特殊属性。工作区具有高度专业的设计,并为开发人员提供了关于已设计 GUI 的所需信息。

应用程序外观与元素添加到设计树的同时构建。X-Designer 不模拟外观;它实际上是从真实部件构建部件树。这使其成为一种所见即所得的 GUI 构建器,但这引入了一种危险的可能性。如果在构建应用程序时创建的实际部件以禁止的方式连接或配置,X-Designer 可能会崩溃,因为意外的部件条件将出现在 X-Designer 可执行文件中。意识到这个问题,我尝试创建各种奇怪的设计,但 X-Designer 非常严格,并且非常肯定它比我更了解 Motif——它不允许我向我的设计添加无效的部件关系。

图 3. 典型的资源框

所有标准的编辑选项都存在,包括支持打印部件树的 PostScript 图像。资源框是可用的,正如人们对 GUI 构建器的期望一样。每个部件都有一个单独的资源面板和核心资源面板。这些面板了解 Motif 默认值,并允许您设置任何资源。Motif 的强大功能并没有以任何方式隐藏;它只是更容易使用。

回调可以以类似的方式操作。用于设置回调的对话框允许您键入函数的名称和要传递给回调的客户端数据以及其他参数。X-Designer 没有实现直接编辑代码的编辑器,但在回调对话框中有一个“编辑”按钮。它运行您最喜欢的编辑器,该编辑器由 EDITOR 环境变量定义。作为 Emacs 的粉丝,我使用 emacsclient 作为我的编辑器,它连接到正在运行的 Emacs 服务器进行文件编辑。起初,我发现弹出一个额外的 xterm 来运行 emacsclient 很烦人。但是,《用户指南》非常翔实,在它的帮助下,我很快找到了 X-Designer 用于运行编辑器的 shell 脚本的位置。我添加了 emacsclient,不再有烦人的 xterm。X-Designer 的可配置性值得您为它支付的所有费用。

编辑回调实际上意味着编辑桩文件,该文件在代码生成过程中生成。X-Designer 在每个回调之前放置一个简短的注释,如果您希望在生成连续的桩文件后保留您的回调代码,则必须保持该注释完整。您甚至可以在桩文件中添加一些与回调无关的代码,并且在重新生成源文件后,它仍将保留在那里。只需遵循 X-Designer 处理这些注释的文档完善的方法即可。

除了通常的回调之外,还可以创建链接。它们是特殊简单的回调,可以附加到按钮以触发简单的操作,例如启用/禁用、管理/取消管理或显示/隐藏某些部件。基本上,链接只是回调,它们与您的设计一起保存到 .xd 文件中,并在 X-Designer 动态构建的原型 GUI 中实际工作。请注意,常规回调代码不会保存在桩文件之外的任何地方。

基本代码生成

代码生成是每个 GUI 构建器的核心操作。尽管 X-Designer 友好的界面引导您完成 GUI 设计,但代码生成是您购买它的原因。我认为 Unix/X 工作站的 Motif/C 组合是原生配置。我尝试创建了一些小的 GUI;它们都工作正常,并且编译时没有警告。我所要做的就是手动设置 Makefile 中 Motif 库和头文件的位置,因为我将它们保存在 /client/lesstif 目录中。C++/Motif 组合也是如此,它也完美地工作。

可移植性是当今的一个重要问题,因此我着手探索 Java 和 Microsoft Windows 代码生成选项。我有一个针对 Motif/C 组合的设计,我尝试将其更改为 Java 代码。当然,回调代码是无用的;我没有期望 X-Designer 将我的 C 代码翻译成 Java 代码,但链接在 Java 中也有效。Java 设计的先决条件是在 CLASSPATH 变量中包含一组 Java 类的路径,这些类随 X-Designer 提供。这些类被放入名为 uk.co.ist.mwt 的包中。它们提供了在 Motif 中有对应物但在 Java 中缺失的组件。还有一些部件被添加到标准 Motif 集中,以实现 Motif 中不存在的一些 Java 组件。它们是容器部件,例如 Card Widget、Flow Widget、Border Widget、Grid Widget 和 GridBag Widget。这实现了 Java 应用程序的所见即所得开发。

为 Java 更改我的测试设计需要切换“模块”菜单下的 Java 兼容性切换按钮。然后,X-Designer 检查当前设计,并向您提供有关任何不兼容部分的消息。有时“修复”按钮将被启用,允许您触发 Java 兼容性的自动修复;否则,您必须自己完成。如果您了解 Java 和 Motif,则 X-Designer 生成的消息足以让您了解正在发生的事情。我对 Java 了解不多,但我知道的足以在几分钟内使设计符合 Java 标准。Java 代码生成对话框与 C/Motif 代码生成对话框不同,您必须在其中指定要创建的文件。包括每个类的文件、最顶层的应用程序类文件以及字符串、颜色、字体和其他对象的单独源文件。使用 JDK 1.0.2,我编译并运行了该应用程序,没有任何问题,作为一个 Java 应用程序。我可以构建一个 Java applet,在这种情况下,可能会弹出额外的约束。

X-Designer 的所有对话框都使用相同的约定来标记与 Java 相关的资源和设置。每当资源旁边有一个冒着热气的咖啡杯图标时,就表示它将在 Java 代码中被遵守。这是一个非常好的功能,因为在您进行更改时,您可以立即注意到更改代码是否仍然符合 Java 标准。

使用 X-Designer 构建 Microsoft Windows 应用程序是另一个主要功能。X-Designer 必须在 Windows 模式下启动才能启用这种跨平台开发。可以通过资源完成,也可以通过键入 xdesigner<\!s>-windows 运行它。在这种情况下,工具栏中会添加一个额外的按钮,用于切换 Windows 兼容性。该过程类似于用于 Java 的过程。如果您将已创建的 Motif 设计读入支持 Windows 的 X-Designer,它会弹出一个对话框,其中包含所有警告以及 Windows 不兼容设计的原因。有时它可以修复问题,有时则不能。

Windows 的代码始终以 C++ 生成,有三种风格:Motif、MFC 或 Motif XP。Motif XP 是一组提供的类,类似于 Motif,但命名与 Microsoft Foundation Classes 匹配。由于 Motif 比 MFC 灵活得多,并且允许更多的自由,因此 X-Designer 必须执行的基本任务是对设计应用额外的约束,以强制 Windows 兼容性。这是 MFC 代码生成的唯一方法。在所有对话框中,MFC 遵守的资源都使用约定;如果输入字段或按钮被涂成粉红色,则表示该资源仅被 Motif 遵守,而不被 MFC 遵守。

X-Designer 包含非常先进的工具,用于 C++ 类结构和层次结构维护。可以将设计的子集创建为 C++ 类,并且可以对任何部件成员应用访问控制。可以使用诸如回调之类的方法,甚至可以在源代码中创建自定义序言以添加额外的类成员。一个有趣的功能是定义创建,它可以放置在部件调色板上,作为可重用的部件组。C++ 程序员会发现大量的功能非常有用,因为类结构成为设计的属性,并且可以在跨平台应用程序中维护。

所有代码生成选项都超出了本次评测的范围,但我确信,即使 Motif 是 X-Designer 的原生工具包,Java 和 MFC 支持也是高级的,最重要的是,它们可以工作。对于任何可以移植到 Java 或 MFC 的设计信息,X-Designer 都会跟踪它并正确地实现它。每个问题都经过考虑,包括字体不一致、颜色不兼容、不同的原生像素图格式以及 Windows 平台下长文件名的问题。

高级功能

X-Designer 拥有许多值得单独评测的功能,但在此处仅进行简要描述。

图 4. AppGuru 工具

AppGuru 是先前设计的 GUI 模板的接口。最初,它包含默认模板,使您能够快速创建具有标准组件的应用程序,例如菜单栏、工具栏和文件选择对话框。起初,AppGuru 看起来像一个可爱的玩具,但它的强大之处在于它的可配置性。每个设计都可以更改为模板。使用 X-Designer 资源,可以将新模板合并到 AppGuru 菜单中,并控制单独的组件,这些组件可以添加到新应用程序中,也可以不添加到新应用程序中。资源的自由度非常大,因此大型软件公司的 X-Designer 管理员可以添加代表组件的像素图。用户可以轻松选择真正需要的组件。我认为这对于软件工程环境来说是一个很棒的工具,在软件工程环境中,可以根据内部策略设置多个预先设计的界面。公司信息对话框和标准应用程序部件可以自动插入到新设计中。

用户定义的部件允许使用 X-Designer 创建的 GUI 超越 Motif,并使用第三方提供的部件,甚至是自定义部件。当我第一次看到 X-Designer 时,我注意到在 X-Designer 部件图标的调色板中,有一个 MesaGL 包提供的 OpenGL 特殊部件。我很好奇它是如何到达那里的,因为它不是 Motif 部件。这个非常复杂的概念背后的基本思想在于 X-Designer 和 GUI 构建过程中使用的部件之间的接口。

可以选择任何部件合并到 X-Designer 中。您必须运行提供的 xdconfig 实用程序来创建配置文件,这些配置文件告诉 X-Designer 关于资源、约束以及所有新部件可以拥有的子部件的信息。甚至可以以像素图形式提供图标,以添加到 X-Designer 部件调色板。为每个新部件指定代码生成选项是一项强制性任务。完成所有这些操作后,使用所有配置文件和提供的 xdesigner.o 对象文件重建 X-Designer。新的二进制文件将包含带有新添加部件的 X-Designer。

安装提供了许多常见部件集的配置,我测试了 Athena 部件集,它工作正常。我现在可以使用 Athena 部件集构建 GUI,而无需 Motif。此过程的唯一缺点是新部件被编译到 X-Designer 本身中。如果由于某种原因,部件导致段错误或以其他方式行为不端,X-Designer 可能会崩溃。实际上,我成功地通过以无效的层次结构布局 Athena 部件使其崩溃。创建成功的部件配置需要深入了解部件、C、make 和 X-Designer。

使用 X-Designer,可以为新应用程序创建在线帮助子系统。所有帮助都以 HTML 文件编写,并带有用户指南中记录的锚点。您只需决定您的应用程序将使用 XD/Help、Netscape 还是 FrameMaker 作为帮助浏览器——只需将附加的提供的对象文件与您的应用程序链接即可。

XD Replay/Capture 工具是 X-Designer 附带的另一个令人惊叹的工具。使用 Capture,您可以选择 Motif 应用程序并捕获其部件实例树。只需要应用程序的可执行文件;Capture 会拍摄其部件结构的快照,然后您可以将其拖入 X-Designer 并重复使用。然后,您可以获取旧的 Motif 应用程序,捕获它们并使用 X-Designer 进一步开发它们。据我了解,该工具的工作原理是将一种寄生共享对象插入到应用程序中,该对象记录部件树的创建。应用程序必须与 Xt 动态链接才能使 Capture 工作。一个类似的工具是 XD Record/Replay;它以内部脚本语言记录应用程序内的任何事件。这些事件稍后可以重放,用于演示、教程、测试以及其他需要应用程序自动行为的情况。

图 5. 记录您的应用程序行为!

在更简单的设计工具中,有 XmString 编辑器、像素图编辑器、字体和颜色选择工具以及布局编辑器。使用 XmString 编辑器,可以在 WYSIWYG 的基础上生成任意 XmString,任何 Motif 程序员都会对此表示赞赏。布局编辑器是一个很酷的工具,用于定义容器部件中子部件的布局。由于这是一项繁琐的工作,布局编辑器在以功能性和可调整大小的方式设置这些部件方面提供了很大的帮助。使用像素图编辑器(功能齐全,并且很好地服务于其目的)导致了一个有趣的事件。当我第一次在菜单栏中选择“像素图编辑器”条目时,X-Designer 崩溃了。我认为这是奇怪的行为,但很快决定使用此崩溃来测试 IST 用户支持。我向 support@ist.co.uk 发送了电子邮件,描述了我的问题,并在不到 30 分钟的时间内得到了关于错误行为的正确答案。像素图编辑器与 .fvwmrc 的默认设置冲突,该设置用于 FVWM 私人使用的神秘的 Meta 第三鼠标按钮组合。我不使用它,所以我从 .fvwmrc 中删除了该行,现在像素图编辑器可以正常工作了。IST 支持团队做得很好。我可以理解任何产品中都可能出现一两个小故障,这就是为什么良好的用户支持是必要的。

图 6. 布局部件

结论

X-Designer 是一款成熟的工具,其作者已经掌握了 GUI 构建器业务的所有技巧。它荣获了两项《Advanced System Magazine》年度最佳产品奖(1993 年和 1995 年),并且是 1995 年《X Advisor》最佳产品。据我所知,它的功能使其成为可用的最先进的 GUI 构建工具。基本功能可以通过非常直接和高效的用户界面访问,该用户界面永远不会用不必要的对话框、问题和无数不同的窗口来打扰您。

X-Designer 在多个级别上都具有高度可配置性,因此可以满足公司内部需求,并进一步根据每个用户或部门细分的需求进行定制。您甚至可以将默认部件图标更改为更彩色的图标,或者禁用某些 Motif 部件的使用(如果您愿意)。

X-Designer 是一款适用于严苛的 GUI 专业人员的工具,他们不能让 GUI 构建器决定他们的交付期限。对于家庭用户来说,这是一款来自另一个世界的工具,这让我悲伤地叹息,因为想到我的评测员许可证即将到期的日子。

X-Designer
Timotej Ecimovic 住在斯洛文尼亚的卢布尔雅那,最近获得了物理学学位。他正在决定毕业后要做什么,所以如果您有想法,请告诉他。可以通过 cic@fiz.uni-lj.si 联系到他,并且总是喜欢收到来自陌生人的电子邮件。
加载 Disqus 评论