在Squeak系统浏览器中,我看到有很多与Etoys相关的类类别:
但是如何从 Squeak 访问 Etoys?我如何获得类似下面所示的屏幕截图的内容?
(Etoys 截图来源:https://commons.wikimedia.org/wiki/File:Squeak_screenshot.png)
还有专门为 Etoys 设置的 Squeak 版本,例如:
我认为有比 Leandro 提议的更简单的方法。
只需从您键入的菜单中运行Workspace:
Project enterNewWithInitialBalloons
用鼠标选择它并运行它 -
Do it
(alt+d
)。应用程序应该开始。我对应用程序不熟悉。对我来说,它看起来与你展示的图片相似。
我搜索了源代码。我必须承认这并不简单。
首先,我试图找到与
Etoys
项目/课程有关的任何内容。我试图找到任何表明您可以启动它的东西。
这样我找到了带有类
Etoys-Experimental
的EToysLauncher
包。启动器这个词对我来说听起来像是可以启动的。我查看了 class
的 EToysLauncher
,在那里我找到了 instance creating
协议,您可以在其中找到这些方法(记住我们仍处于实验包!):
#buildGallery
#buildPanel
#openGallery
#openPanel
如果您经历过这些,例如
EToysLauncher openPanel
您将收到一条消息doesNotUnderstand: #latestProjectVersionsFromFileEntries
。然后我开始调查Walkback
。我试图检查这里出了什么问题。我收到这条消息是因为最后一行^ Project latestProjectVersionsFromFileEntries: entries
。
我去
Project>>latestProjectVersionsFromFileEntries:
检查它实际上在做什么。与此同时,我检查了调试器中 entries
变量的值。在 entries
中,我可以找到一个 OrderedCollection,但没有任何东西可以从该方法中找到 satisfy #('*.pr' '*.pr.gz' '*.project')
。于是我心里想,也许这个项目本身就可以满足它。
我去了
Project class
和协议Etoys-Squeakland-instance creation
,在那里我找到了两种方法#enterNew
和#enterNewWithInitialBalloons
。
#enterNew
给出了doesNotUnderstand: #newMorphicOn:
,所以我跳过了那个并尝试了#enterNewWithInitialBalloons
,它起作用了,因为它在协议中Etoys-Squeakland-instance creation
我得出的结论是它创建了Etoys-Squeakland新实例。
是的,您也可以通过显示共享襟翼激活襟翼。
但是,运行
Project enterNewWithInitialBalloons
和通过首选项显示共享襟翼之间存在很大差异。
如果您通过
Project enterNewWithInitialBalloons
启动 Etoys,您将开始全新的项目(您当前打开的窗口将被隐藏)。要查看以前的窗口,您需要Porojects/Enter Project并切换到HomeProject,或者您必须通过Projects/Close This Project关闭新打开的项目。
显示它的来源是:
enterNewWithInitialBalloons
| newP |
newP := MorphicProject new.
newP world addMorph: (DoCommandOnceMorph new extent: 1@1; actionBlock: [SugarNavigatorBar putUpInitialBalloonHelp]; yourself).
newP enter.
这会创建新的
MorphicProject
并为此项目添加新的 Morph
。
另一方面,如果您使用 首选项/显示共享襟翼 启动它,襟翼将仅添加到您当前的环境中,而无需创建新项目。
显示它的来源是:
Preferences class >>sharedFlapsSettingChanged
sharedFlapsSettingChanged
"The current value of the showSharedFlaps flag has changed; now react"
self showSharedFlaps "viz. the new setting"
ifFalse:
[Flaps globalFlapTabsIfAny do:
[:aFlapTab | Flaps removeFlapTab: aFlapTab keepInList: true]]
ifTrue:
[Smalltalk isMorphic ifTrue:
[self currentWorld addGlobalFlaps]]
self currentWorld addGlobalFlaps
将襟翼添加到currentWorld
。 PasteUpMorph>>addGlobalFlaps
创建新的 PasteUpMorph 并添加它。
您还可以注意到菜单栏标题 Untitled 与 HomeProject 之间的差异。
在 Squeak 的最新版本中,您可以选择打开世界主停靠栏中的“附加”菜单并勾选“设置 etoys 模式”。