プログラム断片(2009/04/16)

for VisualWorks 7.6 with Jun776

ウィンドウを開く

| aWindow |
aWindow := UI.ApplicationWindow new.
aWindow label: 'My First Window'.
aWindow minimumSize: 400 @ 300.
aWindow open.
^aWindow
01
アプリケーションウィンドウのインスタンスを作って
'My First Window'というラベルを付け
最小サイズとして400@300を指定して
ウィンドウを開いて
応答する

ちょっと変更してみよう

| aWindow |
aWindow := UI.ApplicationWindow new.
aWindow label: 'My First Window'.
aWindow minimumSize: 400 @ 300.
aWindow maximumSize: 900 @ 675.
aWindow openIn: (100 @ 100 extent: 600 @ 450).
^aWindow
02
最小サイズと最大サイズを指定し、
決まった場所に決まった大きさでウィンドウを開く

画面を切り取ってウィンドウの中に

| anImage aWindow |
anImage := Graphics.Screen default completeContentsOfArea: (100 @ 100 extent: 600 @ 450).
aWindow := UI.ApplicationWindow new.
aWindow label: 'My First Window'.
aWindow minimumSize: 400 @ 300.
aWindow maximumSize: 900 @ 675.
aWindow component: anImage.
aWindow openIn: (100 @ 100 extent: 600 @ 450).
^aWindow
03
切り取った場所と同じところにウィンドウが開くから
マウスでウィンドウをドラッグして動かしてごらん

画像をウィンドウの中に

| aLambda anImage aWindow |
aLambda :=
        [:urlString |
        | separatorString workDirectory commandLine imageFile imageReader |
        separatorString := Core.String with: OS.Filename separator.
        workDirectory := (OS.SystemUtils getEnvironmentVariable: 'HOME') , separatorString , 'Desktop'.
        commandLine := '(cd ' , workDirectory , ' ; curl -O ' , urlString , ')'.
        OS.ExternalProcess cshOne: commandLine.
        imageFile := workDirectory , separatorString , (OS.URL fromString: urlString) path last.
        imageReader := Graphics.ImageReader fromFile: imageFile.
        imageReader image].
anImage := aLambda value: 'http://www.google.co.jp/intl/ja_jp/images/logo.gif'.
aWindow := UI.ApplicationWindow new.
aWindow label: anImage printString.
aWindow minimumSize: anImage extent.
aWindow maximumSize: anImage extent.
aWindow component: anImage.
aWindow openIn: (100 @ 100 extent: anImage extent).
^aWindow
04
インターネットを介して
公開されている画像をダウンロードし
それを表示する
まずはGoogleのロゴ
| aLambda anImage aWindow |
aLambda :=
        [:urlString |
        | separatorString workDirectory commandLine imageFile imageReader |
        separatorString := Core.String with: OS.Filename separator.
        workDirectory := (OS.SystemUtils getEnvironmentVariable: 'HOME') , separatorString , 'Desktop'.
        commandLine := '(cd ' , workDirectory , ' ; curl -O ' , urlString , ')'.
        OS.ExternalProcess cshOne: commandLine.
        imageFile := workDirectory , separatorString , (OS.URL fromString: urlString) path last.
        imageReader := Graphics.ImageReader fromFile: imageFile.
        imageReader image].
anImage := aLambda value: 'http://i.yimg.jp/images/mht/2009/0414_ioc.gif'.
aWindow := UI.ApplicationWindow new.
aWindow label: anImage printString.
aWindow minimumSize: anImage extent.
aWindow maximumSize: anImage extent.
aWindow component: anImage.
aWindow openIn: (100 @ 100 extent: anImage extent).
^aWindow
05
今度はYahooのロゴ
| aLambda anImage aWindow |
aLambda :=
        [:urlString |
        | separatorString workDirectory commandLine imageFile imageReader |
        separatorString := Core.String with: OS.Filename separator.
        workDirectory := (OS.SystemUtils getEnvironmentVariable: 'HOME') , separatorString , 'Desktop'.
        commandLine := '(cd ' , workDirectory , ' ; curl -O ' , urlString , ')'.
        OS.ExternalProcess cshOne: commandLine.
        imageFile := workDirectory , separatorString , (OS.URL fromString: urlString) path last.
        imageReader := Graphics.ImageReader fromFile: imageFile.
        imageReader image].
anImage := aLambda value: 'http://www.smalltalk.jp/SML/image/balloon.jpg'.
aWindow := UI.ApplicationWindow new.
aWindow label: anImage printString.
aWindow minimumSize: anImage extent.
aWindow maximumSize: anImage extent.
aWindow component: anImage.
aWindow openIn: (100 @ 100 extent: anImage extent).
^aWindow
06
かの有名な「Smalltalk Balloon」

for VisualWorks 7.6 with Jun776


Updated: 2019/08/24 (Created: 2009/04/16) KSU AokiHanko