|
é¨å±ãæé¤ãã¦ãããã以åå°å·ãã O'REILLY ONLamp.com ã«æ²è¼ããã "How to Write a Basic Gtk# Program with Mono" ã®ç´åããåºã¦ããã®ã§ãã¨ãããã翻訳ãã¦ã¿ã:
Mono ã使ã£ããåºæ¬ç㪠Gtk# ããã°ã©ã ã®æ¸ãæ¹
ç·¨éè
ã®ã¡ã¢: O'Reilly ã®ææ°å Mono: A Developer's Notebook ã«ã¯ããã£ã¨ 50 è¿ã mini-projects ãæ²è¼ããã¦ããããã¼ã¸ã§ã³ 1.0 ãªãªã¼ã¹ã«ããã¦æãéè¦ãªç¹ãããç¨åº¦ãããå¾ãªãå¶éäºé
ãªã©ãç´¹ä»ããã¦ãã¾ãããã®æ¬ã§ã¯ãWindows ä¸ã« Mono ãã¤ã³ã¹ãã¼ã«ããæé ããGtk# ãã©ã®ããã«åãã®ããããã¦ã·ã³ãã«ãª Gtk# ããã°ã©ã ã®æ¸ãæ¹ãªã©ãè¨è¿°ããã¦ãããã¾ãã« mini-projects ã並ã¹ã¦ç´¹ä»ãã¦ãããããªæ§æã«ãªã£ã¦ãã¾ãã
Gtk# ã¯ãGTK+ ã¦ã¼ã¶ã»ã¤ã³ã¿ãã§ã¼ã¹ã»ãã¼ã«ãããã«å¯¾ãã Mono API ã§ãã対ãã¦ãMono ã§ã¯ Windows.Forms ãå®è£
ãã¦ãã¾ããGtk# ã¯å®å
¨ãªãªã¼ãã³ã½ã¼ã¹ãªä»£æ¿ç©ã§ãããLinux ä¸ã§ Mono ã®ããã°ã©ã ãå®è¡ããããã®ã«ãã¯ï¼ãã£ã¼ã«ã®é¸æè¢ã§ãããã®ã©ãã§ã¯ Mono ã Windows ã«ã¤ã³ã¹ãã¼ã«ããæé ã¨ã·ã³ãã«ãª Gtk# ããã°ã©ã ã®æ¸ãæ¹ã«ã¤ãã¦å®ä¾ãã¾ããã¦èª¬æãã¦ãã¾ãã
ã¦ã¼ã¶ã»ã¤ã³ã¿ãã§ã¼ã¹ãæ§ç¯ãããã¼ã«ãããã§ã¯ãã¦ã¼ã¶ããããã°ã©ã ã¸ã¤ãã³ããé
éããæ¹æ³ãå®ç¾©ãã¦ãã¾ããããã°ã©ãã®æç¤ºã«å¾ã£ã¦ããã°ã©ã ãå¶å¾¡ããé対話å¼ããã°ã©ã ã«å¯¾ãã¦ã対話å¼ããã°ã©ã ã§ã¯ããã°ã©ã ã§åãåãã¤ãã³ãã«åå¿ããªããã°ãªãã¾ããã
Gtk# ã§ã¯ãããã°ã©ã ãå¶å¾¡ããæµãã¯ã¡ã¤ã³ã»ã¤ãã³ãã»ã«ã¼ãã«ãã£ã¦æ¡ããã¦ãã¾ããããã°ã©ã ã¯èªåã®å¶å¾¡ãã¡ã¤ã³ã»ã«ã¼ãã¸è²ã£ã¦å
¥åã¤ãã³ããå¦çããã¾ããã¤ãã³ããçºçããã¨ãã¯ãã¤ã§ãããããã®ã¤ãã³ãã»ãã³ãã©ãå¼ã³åºãããã¡ã¤ã³ã»ããã°ã©ã ã¸å¶å¾¡ã渡ãã¾ãã
Mono 㯠Common Language Runtime (å
±éè¨èªã©ã³ã¿ã¤ã ) ã®ãªã¼ãã³ã½ã¼ã¹ãªå®è£
ã§ãã
Gtk# ã¦ã¼ã¶ã»ã¤ã³ã¿ãã§ã¼ã¹ã»ã©ã¤ãã©ãªãå«ãã§ãã¾ãã
<center>
<hr width="70%" size="1" noshade>
<table width="70%" border="0" cellspacing="0" cellpadding="0" align="center">
<tr><td valign="top" width="50%" align="center">
<img src="http://www.oreilly.com/catalog/covers/monoadn.s.gif" alt="Mono: A Developer's Notebook" border="0" hspace="20" />
</td>
<td valign="top" width="50%">
é¢é£å³æ¸:
<span>Mono: A Developer's Notebook</span>
å
±è: Edd DumbillãNiel M. Bornstein
</td></tr></table>
<hr width="70%" size="1" noshade>
</center>
ã©ãããã°è¯ãã®ãï¼
æåã«ãã使ãã®ã³ã³ãã¥ã¼ã¿ã« Mono 㨠Gtk# ãã¤ã³ã¹ãã¼ã«ãã¦ä¸ãããMono ã® Windows çã¤ã³ã¹ãã¼ã©ã¯ http://go-mono.com/download.html ãããã¦ã³ãã¼ãã§ãã¾ããGtk# ã® Windows çã¤ã³ã¹ãã¼ã©ã¯ http://gtk-sharp.sourceforge.net/ ã«ãããªã³ã¯ããã©ãã¨ããã¾ãã
Mono ã¯æªã ç©æ¥µçã«éçºããã¦ããã®ã§ãåé¡ã宿çã«çºçãã¾ããhttp://www.nullenvoid.com/gtksharp/wiki/index.php/InstallingBeginnersGuideForWindows ã«ãã Gtk# Windows çãã®ãã¼ãºã»ã¬ã¤ãã確èªãããã¦ã³ãã¼ããã Gtk# ã®ãã¼ã¸ã§ã³ã«å¿ãã¦ä¸ããããæç¤ºã«å¾ã£ã¦ä¸ããã
ã使ãã®ã³ã³ãã¥ã¼ã¿ã® C:\Windows ãã©ã«ãã«ããã
Visual C++ ã®ã©ã³ã¿ã¤ã msvcr70.dll ã確èªãã¦ããã¦ä¸ããã
ãã㯠Microsoft â ã®ãµã¤ãããèªç±ã«ãã¦ã³ãã¼ãã§ãã¾ãã
次ã«ã¤ã³ã¹ãã¼ã«ãã Mono ãæ ¼ç´ãããµãã»ãã©ã«ã (ãã¨ãã° C:\Program Files\Mono-0.31\bin) ãåç
§ãããããç°å¢å¤æ° MONO_PATH ãã»ãããã¾ããããã«ç°å¢å¤æ° PATH ã«ãããã®ãã©ã«ãã追å ãã¦ããã¦ãã ãããããã§ Mono ã®ã¤ã³ã¹ãã¼ã«ãå®äºãã¾ãããããã§ã¯ãã¦ã£ã³ãã¦ãä¸ã¤ããã¿ã³ãä¸ã¤æã£ãåºæ¬ç㪠#Gtk# ããã°ã©ã ãæ§ç¯ãããã¨ã«ãã¾ãããããã®ã¦ã£ã¸ããã¯å
±ã«ã¤ãã³ããçºè¡ãã¦ãããã°ã©ããå¦çãããå
容ãè¨è¿°ãããã³ãã©ã追å ãã¦ã¿ã¾ãã
ãµã³ãã«ï¼: åºæ¬ç㪠Gtk# ã¢ããªã±ã¼ã·ã§ã³: 01-basics/Main.cs
// 04-gtk/01-basics
using System;
using Gtk;
class MainClass {
public static void Main (string[] args)
{
Application.Init ();
Window w = new Window ("Gtk# Basics");
Button b = new Button ("Hit me");
w.DeleteEvent += new DeleteEventHandler (Window_Delete);
b.Clicked += new EventHandler (Button_Clicked);
// GUI ã®åæå
w.Add (b);
w.SetDefaultSize (200, 100);
w.ShowAll ();
Application.Run ();
}
static void Window_Delete (object o,
DeleteEventArgs args)
{
Application.Quit ();
args.RetVal = true;
}
static void Button_Clicked (object o,
EventArgs args)
{
System.Console.WriteLine ("Hello, World!");
}
}
é常ã®ããã¹ãã»ã¨ãã£ã¿ã使ã£ã¦ãã½ã¼ã¹ã»ã³ã¼ãã Main.cs ã¨ãã¦ä¿åãã¦ã次ã®ããã«ã³ã³ãã¤ã«ãã¾ã:
% mcs Main.cs -pkg:gtk-sharp
Compilation succeeded
% mono Main.ext
-r:gtk-sharp 㯠Gtk# ã¢ãã»ã³ããªãåç
§ããããæç¤ºããã³ã³ãã¤ã©ã»ãªãã·ã§ã³ã§ãã
ãã®ãªãã·ã§ã³ãçç¥ããã¨ãã³ã³ãã¤ã©ã¯ Gtk ã¯ã©ã¹ãã©ãã«ããã®ãåãããªããªãã¾ãã
ã³ã³ãã¤ã«ãå®äºããã¢ããªã±ã¼ã·ã§ã³ãå®è¡ããã¨ãå³ï¼ã«ãããããªã¦ã£ã³ãã¦ãè¦ããã¨ãã§ããã§ããã: ãã¿ã³ã¯ã¦ã£ã³ãã¦ã®ä½ç½ä¸æ¯ã«åºãã£ã¦é
ç½®ããã¦ãã¾ãããã¿ã³ãæ°åã¯ãªãã¯ããã¨ãå³ï¼ã®ããã«ç«¯æ«ä¸ã«è¡¨ç¤ºãããåºåãè¦ããã¨ãã§ãã¾ãã
<img alt="Main_cs.png" src="http://mikeforce.homelinux.org/blog/archives/images/Main_cs.png" width="238" height="157" />
å³ï¼. ãã¿ã³ãä»ãã Gtk# ã¦ã£ã³ãã¦
<img alt="Main_cs_out.png" src="http://mikeforce.homelinux.org/blog/archives/images/Main_cs_out.png" width="341" height="187" />
å³ï¼. 端æ«ã®åºå
ã©ã®ããã«åãã¦ããã®ãï¼
Gtk ã®åå空é㯠Gtk ã使ã£ã¦å®è£
ããã¦ãã¾ãããã¼ã«ããããåæåããåºæ¬ç㪠Gtk# ã®å¦çã¯ã¢ããªã±ã¼ã·ã§ã³ã»ã¯ã©ã¹ãå®è¡ãã¦ãã¾ããç¹ã«ãèå³ãå¼ãä¸ã¤ã®ã¹ã¿ãã£ãã¯ãªã¡ã½ãããããã¾ãã
- Init() 㯠Gtk# ã©ã¤ãã©ãªãåæåãã¾ãããããè¡ããªãéãä½ãå§ã¾ãã¾ããã
- Run() ã¯å¶å¾¡ã®æµããã¡ã¤ã³ã®ã¤ãã³ãã»ã«ã¼ãã«ç§»ãã¾ãã
- Quit() ã¯å¶å¾¡ãè¿ã£ã¦ãããã¤ãã³ãã»ã«ã¼ããçµäºãã¾ãã
ããªãã®ã¢ããªã±ã¼ã·ã§ã³ã§ãã°ã©ãã£ãã¯ã¹ãå©ç¨ãããã¨ãå¯è½ãã©ããã
ãã§ãã¯ããããå ´åã¯ãInit() ã¡ã½ããã®ãããã« InitCheck() ã¡ã½ããã
å©ç¨ãã¦ã¿ã¦ãã ããããã®æ¹æ³ã ã¨ãã²ã©ã失æãèµ·ãããã«ããã¹ãã»ã¤ã³ã¿ãã§ã¼ã¹
ã¸ãã©ã¼ã«ããã¯ãããã¨ãã§ãã¾ãã
ã¦ã£ã³ãã¦ã¨ãã¿ã³ã®çæã«é¢ãã¦ã¯ãããã»ã©å¤§ãããªãã®ã§ã¯ãªãã§ã: ãã£ã¨è峿·±ããµã³ãã«ãä»ã®ã©ãã«ããã¾ããããããã§ãã£ã¨ãéè¦ãªãã¨ã¯ãã¤ãã³ãã»ãã³ãã©ã®ãããã³ã°ã§ããGtk# ã®åã¦ã£ã¸ãã (ã¦ã¼ã¶ã»ã¤ã³ã¿ãã§ã¼ã¹ã®è¦ç´ ) ã¯ããããããªã¤ãã³ããçºè¡ãããã¨ãå¯è½ã§ãããããã®å¤ãã¯ãGtk# ã¦ã£ã¸ããã®å
¨ã¦ã®æ´¾çå
ã§ãããåºæ¬ã¦ã£ã¸ããã»ã¯ã©ã¹ããé
éããã¦ãã¾ãããã©ã¼ã«ã¹ãå«ãåºæ¬çãªã¤ãã³ãã¯ãã¦ã£ã¸ãããã¦ã¼ã¶ã®ãã©ã¼ã«ã¹ãåãåãã¨çºè¡ãããDeleteEvent ã¯ã¦ã£ã¸ãããåé¤ããããçºè¡ããã¾ãã
ã¤ãã³ããçºçããã¨ãããã«å¯¾å¿ãããã³ãã©ãå¼ã³åºããã¾ããã¤ãã³ãã«ã¯ãããã¤ãã®ãã³ãã©ãå²ãå½ã¦ããã¨ãå¯è½ã§ãããµã³ãã«ï¼ã§ã¯ããã³ãã© Window_Delete ãã¤ãã³ã DeleteEvent ã«è¿½å ãã¦ãã¾ãã
ã¤ãã³ãã»ãã³ãã©ãä¸åã®ãªãã¸ã§ã¯ãã»ã¤ã³ã¹ã¿ã³ã¹ã«ã¢ã¯ã»ã¹ããå ´åã
ã¹ã¿ãã£ãã¯ãªã¡ã½ããã§ããå¿
è¦ã¯ããã¾ããã
ã¤ã³ã¹ã¿ã³ã¹ã«ãã£ã¦ prefixed ããããã³ãã©ã®å²ãå½ã¦ãè¡ããã¨ã ãã
éãã¾ãã
ããã§åãä¸ãããã³ãã© Window_Delete ã¯è峿·±ãäºã¤ã®å¦çãè¡ãã¾ããä¸çªç®ã¯ãå¶å¾¡ãæ»ã£ã¦ãããã¡ã¤ã³ã»ã«ã¼ããçµäºããã¾ããäºçªç®ã«ããªãã¸ã§ã¯ã args ãä»ãã¦è¿ãå¤ã¨ã㦠ture ãè¿ãã¦ãã¾ããããã¯ããã以éã«ã¤ãã³ããåãåã£ããã³ãã©ã®å¦çã忢ããã¾ãã
ãã¿ã³ã®ãã³ãã©ãã¾ã£ããåæ§ã§ãæ±ç¨ã¦ã£ã¸ããã®ã¤ãã³ãã»ãã³ãã©ãã®ãã®ã§ãããã¿ã³ã¯ç¹æ®ãªã¤ãã³ããããã¤ãæã£ã¦ããããã®ä¸ã¤ã§ãã Clicked ã¯ä¸çªä¾¿å©ã§ãã
ãã³ãã©ã®å²ãå½ã¦ã«ã¤ãã¦ã¯ããã®ä¸ã«æ¨ªãããå®è£
ã¸ã®ãã³ããä¸ãããã¨ã§å®å
¨ãªãã®ã«ãªãã¾ããããããªãããã·ã§ã¼ãã«ãããç¨ãããã¨ãå¯è½ã§ãããã㯠Mono ã§å®è£
ããã¦ãã C# 2.0 ã®æ©è½ "anonymous methods" ãããã¦ãããæ¬¡ã®ããã«äºè¡è¨è¿°ãã¾ã:
w.DeleteEvent += Window_Delete;
b.Clicked += Button_Clicked;
What about...
|