Zauważyłem, że popularność Pythona rośnie (nie tak szybko jak Ruby) i będzie rosła dzięki temu, że będzie jednym z popularnych języków DLR w SilverLight 2.0 Nareszcie można programować sobie w IronPython na stronach WWW dzięki takiej technologii jak Silverlight 1.1.
Zauważyłem, że Michael Foord napisał świetne wprowadzenie do programowania Silverlight 1.1 przy pomocy IronPythona
Przykłady też można znaleźć na IronPython Cookbook
Ja natomiast najpierw ściągnąłem przykłady z CodePlex (one są z kwietnia 2007 roku).
Potem ściągnąłem zestaw kodu źródłowego do SilverLight 1.1 Alpha Refresh.
Na podstawie tego kodu przerobiłem tak, żeby przykłady z CodePlex dały się uruchomić.
(głównie to polegało na zaktualizowaniu przykładów do nowszej wersji pliku Slilverlight.js)
Przykłady z CodePlex to:
Clock - pokazuje jak zaprogramować zegar. Celem tego przykładu jest pokazanie jak może współpracować z XAML
DLRConsole - zaawansowany przykład który pokazuje jak można zaprogramować na stronie internetowej własne środowisko wykonawcze pozwalające na uruchamianie własnych skryptów IronPythona na stronie internetowej
Flaculator - kalkulator, który pokazuje w sposób bardzo przystępny działanie na nawiasach czy złożonych operacjach matematycznych na ułamkach
GrandPiano - pozwala na zaprogramowanie dźwięków poprzez symulację pianina
PhotoViewer - przeglądarka plików graficznych
WordFind - wyszukiwarka tekstów na stronie i podświetla znalezione słowa
Zrobiłem 3 przykłady aby pokazać jaką elastyczność posiada SilverLight jak zacznie się programować z językami DLR
Kod dokumentu XHTML jest taki sam
<html>
<head>
<title>Kurs IronPython z Silverlight Project</title>
<script type="text/javascript" src="Silverlight.js"></script>
<script type="text/javascript">
function CreateSilverlight()
{
Silverlight.createObject("first.xaml",
document.getElementById('SilverlightControlHost'),
"SilverlightControl",
{width: '1000', height: '1000', version: '1.1'},
{onError: null, onLoad: null},
null);
}
</script>
</head>
<body>
<div id="SilverlightControlHost">
<script type="text/javascript">
CreateSilverlight();
</script>
</div>
</body>
</html>
Pierwszy przykład to czysty XAML w pliku first.xaml
<Canvas
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Ellipse Height="200" Width="200"
Stroke="Black" StrokeThickness="10" Fill="SlateBlue" />
</Canvas>
Drugi przykład to załadowanie pliku XAML przez IronPythona w pliku second.xaml
<Canvas
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<x:Code Source="second.py" Type="text/python" />
<Canvas x:Name="Root" Loaded="OnLoad" />
</Canvas>
Kod z second.py
def OnLoad(sender, event):
t = XamlReader.Load("first.xaml")
Root.Children.Add(t)
Trzeci przykład to wygenerowanie z poziomu programowania w IronPythonie w pliku third.xaml
<Canvas
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="200" Height="200" Background="LimeGreen">
<x:Code Source="third.py" Type="text/python" />
<Canvas x:Name="Root" Loaded="OnLoad" />
</Canvas>
Kod z third.py
from System.Windows import DependencyObject
from System.Windows.Controls import TextBlock, Canvas
from System.Windows.Shapes import Ellipse
from System.Windows.Media import SolidColorBrush
from System.Windows.Media import Colors
# Taken from DLRConsole
# A typed way to set properties
SetIntValue = DependencyObject.SetValue.Template[int]
def OnLoad(sender, event):
e = Ellipse()
b = SolidColorBrush(Colors.Blue)
black = SolidColorBrush(Colors.Black)
SetIntValue(e, Canvas.LeftProperty, 30)
SetIntValue(e, Canvas.TopProperty, 30)
SetIntValue(e, Canvas.ZIndexProperty, 2)
e.Height = 200
e.Width = 200
e.Stroke = black
e.StrokeThickness = 10
e.Fill = b
Root.Children.Add(e)
sobota, 22 grudnia 2007
Silverlight 2.0 i IronPython
Autor: Michał Małaj o godzinie 13:51
Subskrybuj:
Komentarze do posta (Atom)
1 komentarz:
Root.Children.Add(e)
Smells like AS3;)
Prześlij komentarz