SeeMe for Windows v4 beta2 のソースにコッソリ書いているが、
Hyperlink クラスをコードで作る方法が解らなかった。
Hyperlink クラス (System.Windows.Documents)
なんだよ、MSDN に普通に書いてあるや、どこを探していたのやら。
つまり Bold とかと同じように使えばいいということねん。
よし、これで Linux 版の GtkAboutDialog と同じレイアウトにしてみる。
Windows 自体というか WPF だけでも専用ダイアログを用意してほしいんだが。
class AboutDlg(Window):
"""
SeeMe About class
"""
def __init__(self, owner, path):
"""
Hyperlink, Run
from System.Windows.Documents import *
"""
self.Owner = owner
self.path = path
self.WindowStartupLocation = WindowStartupLocation.CenterOwner
self.Title = "About SeeMe for Windows"
self.SizeToContent = SizeToContent.WidthAndHeight
self.ResizeMode = ResizeMode.NoResize
self.Icon = BitmapFrame.Create(Uri(self.path + "\\img\\seeme.ico"))
# StackPanel
panel = StackPanel()
# Dialog Icon and Image
img = Image()
img.Source = BitmapImage(Uri(self.path + "\\img\\seeme.ico"))
img.Width = 32
img.Height = 32
panel.Children.Add(img)
# Create TextBlock List
v = []
for i in range(5):
b = TextBlock()
panel.Children.Add(b)
v.append(b)
v[0].Inlines.Add(Bold(Run("SeeMe for Windows 5.0.0\n")))
v[1].Text = "Windows Version ( %s )" % Environment.OSVersion.Version
v[2].Text = sys.version + "\n"
v[3].Text = "Copyright(c)2003-2009 by sasakima-nao"
url = Hyperlink(Run("http://palepoli.skr.jp/"))
url.Click += self.on_url
v[4].Inlines.Add(url)
# Align Right button
btn = Button()
btn.Content = "Close"
btn.Click += self.on_exit
DockPanel.SetDock(btn, Dock.Right)
dp = DockPanel()
dp.LastChildFill = False
dp.Children.Add(btn)
panel.Children.Add(dp)
# Append
self.Content = panel
def on_url(self, sender, e):
Diagnostics.Process.Start("http://palepoli.skr.jp/")
def on_exit(self, sender, e):
self.Close()
コレを Show() でオーナーウインドウから呼び出す
def on_about(self, sender, e):
about = AboutDlg(self, self.path)
about.Show()

ちょっとデザインが違うけど Windows ではこういう感じのほうが好まれそう。
WPF 使っているのに .NET 2.0 がどうのと出るのが少しだけ気に入らない。
つーかまだアルファにも達していないので自身のバージョン表記が滅茶苦茶だ。
とりあえず Hyperlink クラスの使い方はこれでオケのようだ。
たったコレだけのコードで About 完成、XAML ってマジで無駄だと思った。
今日はココしかやっていないのでバックアップはヤメとこう。