IronPython で Silverlight 2.0
Silverlight SDK 2.0 Beta1 を使って IronPython を使った簡単なサンプルを作ってみた。
手順は以下の通り。
- app ディレクトリ作成
- app.xaml 作成
- app.py 作成
- chiron.exe による app.xap 生成
- index.html 作成
なお、Silverlight SDK 2.0 Beta1 では IronPython のほかにも IronRuby や Managed Jscript が使える模様。
app ディレクトリ作成
適当なディレクトリを作成し(これをカレントディレクトリとする)、その中に app サブディレクトリを作成。
app.xaml 作成
app ディレクトリ内にコントロールの UI を定義した app.xaml ファイルを作成。(ファイルは UTF-8 で保存)
<UserControl xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="System.Windows.Controls.UserControl" x:Name="Page"> <StackPanel Orientation="Horizontal"> <TextBlock x:Name="TextBlock1" Text="てすと" /> <TextBlock x:Name="TextBlock2" Text="test" /> </StackPanel> </UserControl>
app.py 作成
app ディレクトリ内に IronPython で処理を記述した app.py ファイルを作成。
from System.Windows import Application from System.Windows.Controls import UserControl def onClickTextBlock1(sender, args): sender.FontSize *= 2 def onClickTextBlock2(sender, args): scene.TextBlock1.FontSize = defaultFontSize scene = Application.Current.LoadRootVisual(UserControl(), 'app.xaml') defaultFontSize = scene.TextBlock1.FontSize scene.TextBlock1.MouseLeftButtonUp += onClickTextBlock1 scene.TextBlock2.MouseLeftButtonUp += onClickTextBlock2
なお、上記のスクリプトは以下のような処理を実装している。
- "てすと" の文字列をマウスで左クリック -> "てすと" のフォントサイズを 2倍
- "test" の文字列をマウスで左クリック -> "てすと" のフォントサイズを元に戻す
chiron.exe による app.xap 生成
Silverlight 2.0 SDK Beta1 のインストールディレクトリ内(例 C:\Program Files\Microsoft SDKs\Silverlight\v2.0\Tools\Chiron)の Chiron.exe を使って、実行に必要なアセンブリファイルを含んだ圧縮ファイル app.xap ファイルを生成する。(カレントディレクトリで実行)
>chiron.exe /directory:app /zipdlr:app.xap
ちなみに、app.xap には以下のようなファイルが含まれる。
- app.py
- app.xaml
- AppManifest.xaml
- IronPython.dll
- IronPython.Modules.dll
- Microsoft.Scripting.dll
- Microsoft.Scripting.Silverlight.dll
index.html 作成
app.xap が生成されたカレントディレクトリに index.html を作成する。object タグを使って Silverlight 用の定義を記述し、source で app.xap を指定する。
<html> <body> <object data="data:application/x-silverlight," type="application/x-silverlight-2-b1" width="100%" height="100%"> <param name="source" value="app.xap"/> </object> </body> </html>
あとは、Silverlight 2.0 をインストールした Web ブラウザで index.html を表示すればよい。とりあえず Firefox 2.0 と IE7 で動作を確認済み。