myBlog

IronPython, Silverlight, WPF, XAML, HTML5, ...

IronPythonで、Art55 の《 衝動アプリ!アニメーションをふんだんに使ってみる!》を実行する!

2011-07-18 12:23:26 | Animation
WPF/IronPythonで、Art55さんの 衝動アプリ!を実行してみました。

創造的プログラミングと粘土細工 ⇒
【WPF】衝動アプリ!アニメーションをふんだんに使ってみる!
http://pro.art55.jp/?eid=1119019
は、本当に衝動アプリだ! 本当に眼から鱗だ!!

Window XAML ⇒ Art55.xaml
http://softgarden.lovepop.jp/myBlog/xaml/Art55.xaml
Resouces XAML ⇒ Art55_Resouces.xaml
http://softgarden.lovepop.jp/myBlog/xaml/Art55_Resouces.xaml

C# から IronPythoon に変換するときに、勝手に myBlog 用に少しアレンジしています。

Art55

#
# Art55.py
#
import clr
clr.AddReferenceByPartialName("PresentationFramework")
clr.AddReferenceByPartialName("PresentationCore")
from System.Windows import ( Window, WindowState, Application ,
             MessageBox, MessageBoxButton, MessageBoxImage, MessageBoxResult)
from System.Windows.Markup import XamlReader

def LoadXamlFromNet(strUrl):
    import System
    request = System.Net.WebRequest.Create(strUrl)
    response = request.GetResponse()
    dataStream = response.GetResponseStream()
    try:
        element = XamlReader.Load(dataStream)
    finally:
        dataStream.Close()
        response.Close()
    return element

def mySetWinButton(sender,e):
    win = sender
    wt = win.Template
    (wt.FindName("Label1",win)).MouseLeftButtonDown += OnMove
    (wt.FindName("Label1",win)).MouseDoubleClick += OnMaximam
    (wt.FindName("Button1",win)).Click += OnMimimam
    (wt.FindName("Button2",win)).Click += OnMaximam
    (wt.FindName("Button3",win)).Click += OnClose

def OnClose(sender, e):
        window = sender.TemplatedParent
        r = MessageBox.Show(
            "Window close?",
            window.Title,
            MessageBoxButton.YesNo,
            MessageBoxImage.Warning )
        if r == MessageBoxResult.No:
            pass
        else:
            window.Close()

def OnMove(sender, e):
        window = sender.TemplatedParent
        window.DragMove()

def OnMaximam(sender, e):
        window = sender.TemplatedParent
        if (window.WindowState != WindowState.Maximized) :
            window.WindowState = WindowState.Maximized
        else:
            window.WindowState = WindowState.Normal

def OnMimimam(sender, e):
        window = sender.TemplatedParent
        if (window.WindowState != WindowState.Minimized) :
            window.WindowState = WindowState.Minimized
        else:
            window.WindowState = WindowState.Normal

if __name__ == "__main__":
    win = LoadXamlFromNet("http://softgarden.lovepop.jp/myBlog/xaml/Art55.xaml")
    win.Title = "Art55's Animation in IronPython"
    style = LoadXamlFromNet("http://softgarden.lovepop.jp/myBlog/xaml/Art55_Resouces.xaml")
    win.Style = style["CustomWindowChrome"]
    win.Loaded += mySetWinButton
    Application().Run(win)
IronPythonの世界 (Windows Script Programming)
荒井 省三
ソフトバンク クリエイティブ
エキスパートPythonプログラミング
Tarek Ziade
アスキー・メディアワークス
Pythonスタートブック
辻 真吾
技術評論社

最新の画像もっと見る

コメントを投稿