Smalltalk 中的 GUI 基础知识
GUI basics in Smalltalk
我对 Smalltalk 还很陌生,我已经搜索了一整天如何编写 GUI。我找到了大量关于如何使用 Morph
s 以及 Halo
s 是什么的信息,但我似乎无法找到我需要的东西(它只是一个 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,因为你说的是 Morph
s 和 ST80),
有几种构建 GUIs.
的方法
普通变形
你可以把 Morphs 放在一起。通常,您需要一些 Widget,例如 SimpleHierarchicalListMorph
。但是这个过程很快就会变得乏味。
工具生成器
如果您创建的应用程序在某种程度上类似于 工具,无论哪种类型,ToolBuilder 都可能是您的朋友。系统浏览器、调试器或最近的 FontImporter 等工具是使用 ToolBuilder 构建的。它需要一个带有 #buildWith:
消息的模型。搜索此消息的实施者以了解如何使用 ToolBuilder。
但可能是最简单的方法:
形态设计器
Morphic Designer 可让您以图形方式组合您的应用程序 UI。您可以重复使用该设计并且不需要太多代码来将您的程序挂钩到 UI。包括示例。
注意:您还找到了 MVC 实现。它在 Squeak 中已经过时了,但它仍然应该可用。但是,您必须创建一个新项目才能使用 MVC。顺便说一句,当您使用 ToolBuilder 时,可以创建可以在 Morphic 和 MVC 项目中 运行 的工具。
我对 Smalltalk 还很陌生,我已经搜索了一整天如何编写 GUI。我找到了大量关于如何使用 Morph
s 以及 Halo
s 是什么的信息,但我似乎无法找到我需要的东西(它只是一个 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,因为你说的是 Morph
s 和 ST80),
有几种构建 GUIs.
普通变形
你可以把 Morphs 放在一起。通常,您需要一些 Widget,例如 SimpleHierarchicalListMorph
。但是这个过程很快就会变得乏味。
工具生成器
如果您创建的应用程序在某种程度上类似于 工具,无论哪种类型,ToolBuilder 都可能是您的朋友。系统浏览器、调试器或最近的 FontImporter 等工具是使用 ToolBuilder 构建的。它需要一个带有 #buildWith:
消息的模型。搜索此消息的实施者以了解如何使用 ToolBuilder。
但可能是最简单的方法:
形态设计器
Morphic Designer 可让您以图形方式组合您的应用程序 UI。您可以重复使用该设计并且不需要太多代码来将您的程序挂钩到 UI。包括示例。
注意:您还找到了 MVC 实现。它在 Squeak 中已经过时了,但它仍然应该可用。但是,您必须创建一个新项目才能使用 MVC。顺便说一句,当您使用 ToolBuilder 时,可以创建可以在 Morphic 和 MVC 项目中 运行 的工具。