ãã®ãªãœãŒã¹ã®ãã¹ãŠã®èªè
ãžã®æšæ¶ïŒ çŸæç¹ã§ã¯ãã¯ãã¹ãã©ãããã©ãŒã ã®GUIã¢ããªã±ãŒã·ã§ã³ã§ããMicrosoft .NET / Monoã確ä¿ããããã«ãå€ãã®ãœãªã¥ãŒã·ã§ã³ãéçºãããŠããŸãã ãã®èšäºã§ã¯ããã®ãã¡ã®1ã€ã§ããMonoéçºè
ã®å
¬åŒãããžã§ã¯ãã§ããXWT Widget ToolkitïŒXwtïŒã玹ä»ããŸãã çŸæç¹ã§ã¯ããªããžããª
github.com/mono/xwtãããœãŒã¹ã®åœ¢åŒã§ã®ã¿ããŠã³ããŒãã§ããŸãã æ®å¿µãªãããã€ã³ã¿ãŒãããäžã§ãã®ããŒã«ãããã«é¢ãã
æèœã§å®å
šãªèšäºãèŠã€ããããšãã§ããªãã£ãã®ã§ãèªåã§ãã¹ãŠãå
ãåããªããã°ãªããŸããã§ããã ãªããªã ãã®èšäºã¯åºåã§ãã¬ãã¥ãŒã§ããããŸãããXWTãåã
Eto FormsãŸãã¯System.Windows.FormsïŒåŸè
ã¯Monoã§éåžžã«ããŸãæ©èœããïŒãããåªããŠãããæªããã説æããŸããã ãã®èšäºã§ã¯ãXWTãã©ã®ããã«æ©èœããããšãXWTã䜿çšããåºæ¬ã«ã€ããŠèª¬æããŸãã
泚æïŒ ãã®ããŒã«ãããã¯éåžžã«æªå å·¥ã§ãããå€ãã®ãã°ãå«ãŸããŠããŸãã ã¢ããªã±ãŒã·ã§ã³ã§äœ¿çšããŠãæ©èœããªãããããã£ãããªã¬ãŒãããªãã€ãã³ããªã©ãæ€åºããæºåãããŸãã äžå¿«ãªçŸè±¡
ã¯ããã«
XWT Widget ToolkitïŒå€ãã®äººãèããXamarin Widget Toolkitã§ã¯ãªãååã埩å·åãããŠããããã§ãïŒã¯ãXwt.Gtk.dllã©ã€ãã©ãªããæšæºXwtã€ã³ã¿ãŒãã§ã€ã¹ã䜿çšããŠæ§ç¯ãããããã¯ãšã³ããããŒãããXwt.dllãšããæœè±¡çãªããŒããŒãããã¹ããŒã ã«åŸã£ãŠé
眮ãããŸããXwt.Wpf.dllãXwt.Mac.dllãªã© XWTããã€ã¹ã«ã€ããŠè©³ããã¯
ã2013幎11æ11æ¥ã®Habraãããã¯ãã芧ãã ããã APIæ§é ã®ç¹ã§ã¯ãXwtã¯GTKïŒãšéåžžã«äŒŒãŠããŸãããããã¯é©ãããšã§ã¯ãããŸãããXwtã¯ãMonoDevelopãLinux以å€ã®ãã©ãããã©ãŒã ïŒäž»ã«MacOS XïŒã«ç§»æ€ããããã«äœæãããŸããã
åæå
Xwtã¯ããã¹ãïŒéåžžã®ã¢ããªã±ãŒã·ã§ã³ã®å ŽåïŒãšããŠããŸãã¯XwtãŠã£ãžã§ããããã€ãã£ãã¢ããªã±ãŒã·ã§ã³ã«åã蟌ãŸããŠããå Žåã¯ã²ã¹ããšããŠåæåã§ããŸãã äž¡æ¹ã®æ¹æ³ã¯äžè¬çã«é¡äŒŒããŠãããããåæã«æ€èšãããŸãã
ãŸããXWTèªäœãšããã¯ãšã³ããåæåãããŸãïŒ
Xwt.Application.Initialize(Xwt.ToolkitType.Wpf);
åŒæ°ã䜿çšããŠãããŸããŸãªããã¯ãšã³ããããŒãã§ããŸãã ããã¯ãšã³ããããŒãããã«ã¯ãXwtã*ãDllãã¡ã€ã«ãã¢ããªã±ãŒã·ã§ã³ã®ãã£ã¬ã¯ããªã«é
眮ããå¿
èŠããããŸãïŒCocoaããã¯ãšã³ãã䜿çšããå Žåã¯ãMonoMac.dllãã¡ã€ã«ãé
眮ããå¿
èŠããããŸãïŒã ãŸããããã¯ãšã³ãdllã®.net眲åãå«ãæååã®ã¿ãåŒæ°ãšããŠèšå®ããããšãã§ããŸãããããã¯æšå¥šãããŸããã
ãDLLå°çããçºçããå¯èœæ§ããããŸãã 泚ææ·±ãèªè
ã¯ãããã¯ãšã³ããæåã§èšå®ãããŠããããšã«ããã«æ°ä»ãã§ãããã XWT APIã«ã¯åŒæ°ãªãã§Xwt.Application.InitializeïŒïŒã®åŒã³åºãããããŸãããæåŸ
ã©ããã«æ©èœããŸããã ãããã£ãŠãOSã®å®çŸ©ãšToolkitTypeã®éžæãèªåã§èªè»¢è»ãäœæããå¿
èŠããããŸãã MacOSXã¯
åã«å®çŸ©ãããŠããªãããšã«æ³šæããŠãã ããã
åæååŸããŠã£ã³ããŠïŒXwt.WindowïŒãäœæããŠç»é¢ã«è¡šç€ºããå¿
èŠããããŸã
ãã®ãããXWTãããŠã³ããŒããããŠã£ã³ããŠã衚瀺ããŠç¹æ»
ããããã»ã¹ãå®äºããŸããã ãããŠããã¹ãŠãUIã€ãã³ãã¹ããªãŒã ã®éå§ãå¿ããããã§ãã ããã¯1è¡ã§è¡ãããŸãã
Xwt.Application.Run();
ãã®æç¹ã§ãMainïŒïŒé¢æ°ã®ã³ãŒãããã³ã°ãããããä»ã®ãã¹ãŠã¯UIã¹ã¬ãããã€ãŸãäžèšã®è¡ã§äœæããããã©ãŒã ã§å®è¡ããå¿
èŠããããŸãã
ãã©ãŒã ããã€ã¢ãã°ããŠã£ãžã§ãã
ãã®ããŒã«ãããã®ãŠãŒã¶ãŒã³ã³ãããŒã«ã¯ãŠã£ãžã§ãããšåŒã°ããŸãã ãŠã£ãžã§ããã¯ä»ã®ãŠã£ãžã§ããïŒå¯äžã®æ¹æ³ïŒã«åã蟌ãŸãããŠã£ãžã§ããã¯ãŠã£ã³ããŠã«åã蟌ãŸããŸãã Windowsã¯ãXwt.WindowFrameãç¶æ¿ããã¯ã©ã¹ã§ãã 確ãã«ãååãšããŠããããã¯ã€ã³ã¹ã¿ã³ã¹ãè¡šãããWindowãŸãã¯Dialogã¯ã©ã¹ããç¶æ¿ããŸãã ãã©ãŒã ããã®ãã€ã¢ãã°ã¯ãã¢ãŒãã«ã¢ãŒãã§ã®åºåïŒ
Run(WindowFrame parent)
function
Run(WindowFrame parent)
ïŒãããã³ã¯ãŒã¯ã¹ããŒã¹ãçµã¿èŸŒã¿ãŠã£ãžã§ããïŒã³ã³ãã³ãïŒãšã³ã³ãããŒã«ãã¿ã³ïŒãã¿ã³ïŒã®éšéã«åå²ããå¯èœæ§ã«ãã£ãŠåºå¥ãããŸãã ãã©ãŒã ã«ã¯ãã¿ã€ãã«ããã¹ãããããŠã£ãžã§ããã®éšéïŒã³ã³ãã³ãïŒãããã³ã¡ãã¥ãŒããŒïŒMainMenuïŒã®ã¿ããããŸãã æåŸã¯ãã€ã¢ãã°ã«ãããŸããã
ãã©ãŒã ãšãã€ã¢ãã°ã®äž¡æ¹ã«ã¯ãäžè¬çã«ä»ã®GUIããŒã«ããããšåæ§ã«ãããããå°ãççž®ãããã€ãã³ããšããããã£ã®åºæ¬ã»ããããããŸãã Xamarin LLCã®éçºè
ãScããªãããXwtã€ã³ã¿ãŒãã§ãŒã¹ã®åãã€ã³ãã®åŸãã«ãäžåºŠã«4ã€ã®ããã¯ãšã³ãã®é·ãæ¹è¯ãããããšãå¿ããªãã§ãã ããã
ãŠã£ãžã§ããã¯ãXwt.Widgetãç¶æ¿ããã¯ã©ã¹ã§ãã ãŠã£ãžã§ãã-ã³ã³ãããšãŠã£ãžã§ãã-ã³ã³ãããŒã«ããããŸãã Windowsèªäœã«ã¯ããã®å¶éãå
æããããã«æ倧1ã€ã®ãŠã£ãžã§ãããå«ããããšãã§ããã³ã³ãããŠã£ãžã§ãããäœæãããŸããã ã³ã³ããã¯ããã®ååã瀺ããšãããç¡å¶éã®æ°ã®ä»ã®ãŠã£ãžã§ããïŒã³ã³ãããŠã£ãžã§ãããå«ãïŒãå«ãããšãã§ãããŠã£ã³ããŠãå¥ã®ã³ã³ãããªã©ã®ç¬èªã®ãã¹ãïŒèŠªïŒã§ã®é
眮ãæ
åœããŸãã åçŽãªãŠã£ãžã§ããã¯èª¬æãå¿
èŠã§ã¯ãªããšæããŸããããããã®ããã¥ã¡ã³ãã¯æããã«åŒ±ãã§ãã æ¢ç¥ã®ããããã£ãšã€ãã³ãã«ç°ãªãååãä»ããæºåãããŸãã ããšãã°ãããŠã¹ã¯ãªãã¯ããå«ãã ããã«ãButtonPressedã€ãã³ããçºçãããŸãã
çµ±åããããã«ãåã®èšäºã®äŸãåæããŸãããã
class Program { [STAThread]
ã³ã³ãããŠã£ãžã§ãã
ãã®ããŒã«ãããã«ã¯
ãGTKã®spionerennyã®ãããªå€ãã®ã³ã³ãããŠã£ãžã§ãããå«ãŸããŠããŸãã GTKïŒã«äžæ
£ããªæ¹ã®ããã«ããããã®ã³ã³ãã
ã¿ã³ã¯ã®æŠèŠã説æããŸãã
ãã£ã³ãã¹-ãã£ã³ãã¹

æãç°¡åãªã³ã³ããã èªåã§ãŠã£ãžã§ãããã©ã³ãã ã«ã¬ã€ã¢ãŠãããããšãã§ãïŒAddChildïŒXwt.Widget wïŒïŒãããããçš®é¡ã®æç»ããµããŒãããŸãïŒOnDrawïŒXwt.Drawing.Context ctxãXwt.Rectangle dirtyRectïŒïŒã ãã ãããæ¯æ¥ãã®äœ¿çšã¯æšå¥šãããŸããã Xwtã®ã¬ã³ããªã³ã°ããŒã«ã¯å®ç§ãšã¯ã»ã©é ããã®ã§ãããèŠçŽ ã®ããŒãããžã·ã§ãã³ã°ã«ãããå
éšã³ã³ãã³ãïŒããã³ãµã€ãºïŒãå€æŽãããšãã«ãŠã£ãžã§ãããå®å
šã«æ··ä¹±ããå¯èœæ§ããããŸãã
ããã¯ã¹-æ¬æ£ïŒã©ãã¯ïŒ

Vbox

HBox
HBoxããã³VBoxãŠã£ãžã§ããã¯ãä»ã®ãŠã£ãžã§ããã®ãµã€ãºãšäœçœ®ãèªåçã«å¶åŸ¡ããŠããŠã£ãžã§ããã1è¡ã«é
眮ããããã«èšèšãããŠããŸãã PackStartããã³PackEndé¢æ°ãåŒã³åºããŠãŠã£ãžã§ãããè¿œå ããŸãã åŒæ°ãæäœããããšã«ããããŠã£ãžã§ããã®é
眮ã¢ãŒããšã¹ãã¬ããã¢ãŒããæå®ã§ããŸãã margin *åŒæ°ã¯ãç解ã§ããªãå€ã§æå®ããã96dpiã®æšæºãã£ã¹ãã¬ã€è§£å床ã¯å³å¯ã«1pxã«çãããªããŸãããDPIã®å¢å ïŒã¹ã±ãŒã«ããïŒã§é©åã«æ©èœãç¶ããŸãã
ããŒãã«-ããŒãã«

WebããŒãžã®å€å
žçãªæ§ç¯ã«ç²ŸéããŠãã人ã«ãšã£ãŠã¯ãããã¯ããããæ¢åã®ãã®ã®äžã§æã䟿å©ãªã³ã³ããã§ãããã ã¯ããããã¯æãäžè¬çãªããŒãã«ã§ãã åã»ã«ã«ãŠã£ãžã§ãããå²ãåœãŠãããšãã§ããŸãã 倧èŠæš¡ãªåºå®ããŒã¯ã¢ããã¢ããªã±ãŒã·ã§ã³ã®å Žåãããã¯ãããããããŸã§ã§æé«ã®ã³ã³ãããŒã§ãã ãã ããããŽã ãã®ããŒã¯ã¢ããã¯èš±å¯ãããŸããã ã»ã«å
ã®ãŠã£ãžã§ããã®ãµã€ãºãå€æŽãããšãå/è¡ã®å¯žæ³ãèªåçã«å€æŽãããŸããããŠã£ãžã§ãããã€ããã§å¢çç·ããã©ãã°ããããšã¯ã§ããŸããïŒçŸæç¹ã§ã¯ïŒã
ãã€ã³-ããã«

2ã€ã®ããã«ããã€ã³ã¿ãŒãã§ã€ã¹ãäœæãããããã®æ¯çãå€æŽã§ããããã«ããããã«ãVPanedã³ã³ãããšHPanedã³ã³ããããããŸãã çŸæç¹ã§ã¯ãXwtã§ã¯ãããã°ã©ã ã§æ¯çãå€æŽããããšã¯ã§ããŸããããããã«ã¯2ã€ã®éã¢ã¯ãã£ããªããããã£ããããŸãããããããã©ã®ããã«ç°ãªããã¯ããããŸããã§ãã-PositionãšPositionFractionã
ããŒãããã¯-ã¿ã

ãããŒãããã¯ãã¯ã以åã®èšå®ãŠã£ã³ããŠã®ããã«ãã¿ãä»ãã€ã³ã¿ãŒãã§ã€ã¹ãäœæããããšãç®çãšããŠããŸãã VBoxãªã©ã®ã³ã³ãããåã®ã¿ããšããŠæå®ããå¿
èŠãããããšã«æ³šæããŠãã ãããããããªããšããŠã£ãžã§ããã1ã€ããé
眮ã§ããŸããã
ãšãã¹ãã³ããŒ-ããŒã«ã¢ããããã«

ãã®ãŠã£ãžã§ããã¯ãããŸããŸãªäºæ¬¡çãªè¿œå æ
å ±ãŸãã¯ã¢ããªã±ãŒã·ã§ã³ã³ã³ãããŒã«ã衚瀺ããããã«èšèšãããŠããŸãã ãŸããããŒãããã¯ãšåæ§ã«ãã³ã³ãããæ¡ä»¶ä»ãã§åŠçããŸãã ã³ã³ãã³ãïŒã³ã³ãã³ãïŒãšããŠ1ã€ã®ãŠã£ãžã§ããã®ã¿ããµããŒãããŸãã
XWTãŠã£ãžã§ããã®äœ¿çšäŸã¯ãããŒã«ãããã®ãœãŒã¹ã«å«ãŸããŠããäŸãšãã¹ãã«èšèŒãããŠããŸãã ããå€ãã®æ
å ±ãèŠã€ããå¯èœæ§ã¯äœã ãã®ããŒã«ãããã¯ããŸã£ããææžåãããŠããªããšèšããªãéããäžååã«ææžåãããŠããŸãã ãããŸã§ã®ãšãããXWTã«ã¯æ¢ç¥ã®ã¢ããªã±ãŒã·ã§ã³ã¯ã»ãšãã©ãããŸããããããã¯é©ãããšã§ã¯ãããŸããããGithubïŒ
tyts ïŒããã³ãã®ä»ã®å
¬éãªããžããªãæ€çŽ¢ãããšãå€ãã®èå³æ·±ãã¹ã¿ãŒãã¢ããã
çãŸããŸãã
次ã®èšäºã§ã¯ããã€ãã£ã.NETã¢ããªã±ãŒã·ã§ã³ãžã®åã蟌ã¿ãMarkdownãã«ãã€ã³ããŒãµãŒãèªå®¶è£œãŠã£ãžã§ããã«ãã©ãŒã«ã¹ãèšå®ããæ©èœãXWTã§ã®ã°ã©ãã£ãã¯ã®ã¬ã³ããªã³ã°ãTreeViewãšListViewã®æäœãXWTã¹ã¬ãããã¶ãŒãã察åŠæ¹æ³ãªã©ãXWTã®ãè¯ãç¹ãã«ã€ããŠèª¬æããŸããããšããã®ããŒã«ãããã®ããã€ãã®é倧ãªæ¬ é¥ïŒãã®èšèªã¯å°ããªãã°ãåŒã¶ããšãæ¢ããŠããŸããïŒã XWTã®ãã®ä»ã®éèŠãªè©³çŽ°ãç¥ã£ãŠããå Žåã¯ãã³ã¡ã³ãã§èšåããŠãã ãã-第2æ¡ã§èšåãã¹ãããšããããŸãã
PS Visual Studio 2010ã§XWT slnãã¡ã€ã«ãéããªãå Žåã¯ãSP1ãŸãã¯VS 2012+ãã€ã³ã¹ããŒã«ããŠãã ããã