Smalltalk 中的 GUI 基础知识

GUI basics in Smalltalk

我对 Smalltalk 还很陌生,我已经搜索了一整天如何编写 GUI。我找到了大量关于如何使用 Morphs 以及 Halos 是什么的信息,但我似乎无法找到我需要的东西(它只是一个 table 中的条目来自 Dictionary).

Morphs 旁边,我还发现了很多关于 smalltalk 如何引入 MVC 原则的内容。我什至找到了 ST-80 Views 类别,其中包含我需要的所有内容,但我还是不确定如何正确使用它,而且我似乎找不到正确的资源来帮助我入门。

因此我的问题是:从哪里开始构建简单的 GUI?我应该如何从十亿个可用的 Morph 中进行选择,以及如何将它们组合成一个可靠的界面? MVC 应该只在变得更复杂时才使用,还是它们对简单的 GUI 也有用?是否有关于在哪些情况下使用什么的一般概述?

为了说明我想做什么,我添加了一些伪代码来说明我的想法:

d := Dictionary new.
"add data to the dictionary..."

view := DictionaryView new.
view addDictionary: d.

button := SimpleButtonMorph new.
"e.g. change label to sum of values"
button target: [button label: d sum.].

window := SystemWindow labelled: test.
window addMorph: view.
window addMorph: button.

非常感谢任何帮助我开始这件事的人。


更新:

我最近找到了 a chapter from a book that helped me understand morphic better with some nice explanation and example code and for people who want to know more, there is a whole list of free books too. Also useful were the tutorials from the squeak wiki。特别是 Pluggable Morphs 上的那个帮助我更好地理解了这个概念。注意,本教程隐藏在未审核教程列表中(可能是因为可以下载的项目有一点错误)。

在 Squeak 中(我假设你使用 Squeak,因为你说的是​​ Morphs 和 ST80), 有几种构建 GUIs.

的方法

普通变形

你可以把 Morphs 放在一起。通常,您需要一些 Widget,例如 SimpleHierarchicalListMorph。但是这个过程很快就会变得乏味。

工具生成器

如果您创建的应用程序在某种程度上类似于 工具,无论哪种类型,ToolBuilder 都可能是您的朋友。系统浏览器、调试器或最近的 FontImporter 等工具是使用 ToolBuilder 构建的。它需要一个带有 #buildWith: 消息的模型。搜索此消息的实施者以了解如何使用 ToolBuilder。

但可能是最简单的方法:

形态设计器

Morphic Designer 可让您以图形方式组合您的应用程序 UI。您可以重复使用该设计并且不需要太多代码来将您的程序挂钩到 UI。包括示例。


注意:您还找到了 MVC 实现。它在 Squeak 中已经过时了,但它仍然应该可用。但是,您必须创建一个新项目才能使用 MVC。顺便说一句,当您使用 ToolBuilder 时,可以创建可以在 Morphic 和 MVC 项目中 运行 的工具。