如何使用UITheme构建器控制多形式大小

时间:2013-09-09 04:14:55

标签: smalltalk pharo

我正在尝试在Smalltalk中创建一个Dominion游戏,但我无法按照我想要的方式获得GUI的布局。

目前,我将此作为构建GUI的代码:

open: game
| builder content |
builder := UITheme builder.
content := builder
    newColumn:
    {(builder
        newListFor: game
            list: #supplyStrings
            selected: nil
            changeSelected: nil
            getEnabled: nil
            help: 'Supply') .
        (builder newRow: (game players collect: [ :p | self morphForPlayer: p usingBuilder: builder ]))}.

gui := (content openInWindowLabeled: 'DominionGame') extent: 1024 @ 768

(原谅可怜的Smalltalk风格,我一直使用Smalltalk一周)。

我得到了我想要的基本概念:一个窗口,顶部对所有玩家都是通用的,底部分为每个玩家的部分。

我遇到的麻烦是顶部太大,占据了大约一半的窗口,我不知道如何解决这个问题。

我尝试将“vsizing:#shrinkWrap”添加到#supplyStrings列表的构建器中,但是这样做太小了,迫使内容使用滚动条;我尝试将“范围:1024 @ 200”添加到该变形中,并且看不到任何效果。

所以我有两个问题:

1)如何对使用UITheme构建器构建的对象进行更精细的布局控制? 2)在哪里可以找到有关如何使用Pharo进行UI设计的文档?我喜欢RTFM,如果我知道TFM在哪里R!

1 个答案:

答案 0 :(得分:1)

您可以在Pharo中以不同的抽象级别构建UI。有Glamour,您可以根据演示文稿,窗格和广告来描述用户界面。端口。它对于构建专用模型浏览器非常有用。对于构建游戏,它似乎不是最合适的。然后有Spec,旨在重用可组合小部件。这可能是一个很好的选择。今年夏天有一个GSoC项目来构建Spec UIPainter,因此您可以很好地了解如何布局UI。 PolyMorph基本上是Morphic上的一个抽象层,提供不同的皮肤(UIThemes)。下面就是Morphic。直接在Morphic中构建的一个优点是有一个很好的游戏构建示例:Laser Game(在Pharo中需要稍作修改)。