泚æïŒ ãã®ããŒã«ãããã¯éåžžã«æªå å·¥ã§ãããå€ãã®ãã°ãå«ãŸããŠããŸãã ã¢ããªã±ãŒã·ã§ã³ã§äœ¿çšããŠãæ©èœããªãããããã£ãããªã¬ãŒãããªãã€ãã³ããªã©ãæ€åºããæºåãããŸãã äžå¿«ãªçŸè±¡
ã¯ããã«
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.Application.InitializeAsGuest(Xwt.ToolkitType.Wpf);
åŒæ°ã䜿çšããŠãããŸããŸãªããã¯ãšã³ããããŒãã§ããŸãã ããã¯ãšã³ããããŒãããã«ã¯ãXwtã*ãDllãã¡ã€ã«ãã¢ããªã±ãŒã·ã§ã³ã®ãã£ã¬ã¯ããªã«é 眮ããå¿ èŠããããŸãïŒCocoaããã¯ãšã³ãã䜿çšããå Žåã¯ãMonoMac.dllãã¡ã€ã«ãé 眮ããå¿ èŠããããŸãïŒã ãŸããããã¯ãšã³ãdllã®.net眲åãå«ãæååã®ã¿ãåŒæ°ãšããŠèšå®ããããšãã§ããŸãããããã¯æšå¥šãããŸããã ãDLLå°çããçºçããå¯èœæ§ããããŸãã 泚ææ·±ãèªè ã¯ãããã¯ãšã³ããæåã§èšå®ãããŠããããšã«ããã«æ°ä»ãã§ãããã XWT APIã«ã¯åŒæ°ãªãã§Xwt.Application.InitializeïŒïŒã®åŒã³åºãããããŸãããæåŸ ã©ããã«æ©èœããŸããã ãããã£ãŠãOSã®å®çŸ©ãšToolkitTypeã®éžæãèªåã§èªè»¢è»ãäœæããå¿ èŠããããŸãã MacOSXã¯åã«å®çŸ©ãããŠããªãããšã«æ³šæããŠãã ããã
åæååŸããŠã£ã³ããŠïŒXwt.WindowïŒãäœæããŠç»é¢ã«è¡šç€ºããå¿ èŠããããŸã
//MainWindow - Xwt.Window, new MainWindow().Show();
ãã®ããã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] // WPF static void Main(string[] args) { // XWT Xwt.Application.Initialize(Xwt.ToolkitType.Wpf); Xwt.Window MainWindow = new Xwt.Window() { Title = "Xwt Test" }; MainWindow.CloseRequested += (o, e) => { Xwt.Application.Exit(); // exe' }; // Xwt.Menu MainMenu = new Xwt.Menu(); Xwt.RichTextView TextView = new Xwt.RichTextView(); Xwt.MenuItem FileOpenMenuItem = new Xwt.MenuItem(""); Xwt.Menu FileMenu = new Xwt.Menu(); FileOpenMenuItem.Clicked += (o,e) => { Xwt.OpenFileDialog Dialog = new Xwt.OpenFileDialog(" "); if (Dialog.Run(MainWindow)) { TextView.LoadFile(Dialog.FileName, Xwt.Formats.TextFormat.Markdown); } }; Xwt.MenuItem FileMenuItem = new Xwt.MenuItem("") { SubMenu = FileMenu }; FileMenu.Items.Add(FileOpenMenuItem); MainMenu.Items.Add(FileMenuItem); // MainWindow.MainMenu = MainMenu; MainWindow.Content = TextView; // MainWindow.Show(); Xwt.Application.Run(); } }
ã³ã³ãããŠã£ãžã§ãã
ãã®ããŒã«ãããã«ã¯
ãã£ã³ãã¹-ãã£ã³ãã¹
æãç°¡åãªã³ã³ããã èªåã§ãŠã£ãžã§ãããã©ã³ãã ã«ã¬ã€ã¢ãŠãããããšãã§ãïŒ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+ãã€ã³ã¹ããŒã«ããŠãã ããã