如何从 Squeak 启动 Etoys?

问题描述 投票:0回答:3

在Squeak系统浏览器中,我看到有很多与Etoys相关的类类别:

但是如何从 Squeak 访问 Etoys?我如何获得类似下面所示的屏幕截图的内容?

(Etoys 截图来源:https://commons.wikimedia.org/wiki/File:Squeak_screenshot.png

smalltalk squeak
3个回答
2
投票

还有专门为 Etoys 设置的 Squeak 版本,例如:

https://squeak.js.org/etoys/#fullscreen


1
投票

我认为有比 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 并添加它。

您还可以注意到菜单栏标题 UntitledHomeProject 之间的差异。


0
投票

在 Squeak 的最新版本中,您可以选择打开世界主停靠栏中的“附加”菜单并勾选“设置 etoys 模式”。

© www.soinside.com 2019 - 2024. All rights reserved.