Terminal.Gui是适用于.NET的跨平台终端UI工具包。
特性
跨平台:支持Windows、Mac和Linux。Curses、Windows控制台和.NET控制台的终端驱动程序意味着应用程序在彩色和单色终端上都能正常运行。键盘和鼠标输入:支持键盘和鼠标输入,包括拖放支持。灵活布局:支持绝对布局和创新的计算布局系统(ComputedLayout)。ComputedLayout使控件之间的相对布局变得容易,并支持动态终端UI。支持剪贴板:剪切、复制和粘贴通过Clipboard类提供的文本。任意视图:所有可见的UI元素都是View类的子类,而这些子类又可以包含任意数量的sub-views。高级应用程序功能:主循环支持处理事件、空闲处理程序、计时器和监控文件描述符。大多数类对于threading是安全的。响应式扩展(ReactiveExtensions):使用响应式扩展并受益于提高的代码可读性,以及应用MVVM模式和ReactiveUI数据绑定的能力。示例代码
usingTerminal.Gui;usingNStack;Application.Init();vartop=Application.Top;//Createsthetop-levelwindowtoshowvarwin=newWindow("MyApp"){X=0,Y=1,//Leaveonerowforthetoplevelmenu//ByusingDim.Fill(),itwillautomaticallyresizewithoutmanualinterventionWidth=Dim.Fill(),Height=Dim.Fill()};top.Add(win);//Createsamenubar,theitem"New"hasahelpmenu.varmenu=newMenuBar(newMenuBarItem[]{newMenuBarItem("_File",newMenuItem[]{newMenuItem("_New","Createsnewfile",null),newMenuItem("_Close","",null),newMenuItem("_Quit","",()=>{if(Quit())top.Running=false;})}),newMenuBarItem("_Edit",newMenuItem[]{newMenuItem("_Copy","",null),newMenuItem("C_ut","",null),newMenuItem("_Paste","",null)})});top.Add(menu);staticboolQuit(){varn=MessageBox.Query(50,7,"QuitDemo","Areyousureyouwanttoquitthisdemo?","Yes","No");returnn==0;}varlogin=newLabel("Login:"){X=3,Y=2};varpassword=newLabel("Password:"){X=Pos.Left(login),Y=Pos.Top(login)+1};varloginText=newTextField(""){X=Pos.Right(password),Y=Pos.Top(login),Width=40};varpassText=newTextField(""){Secret=true,X=Pos.Left(loginText),Y=Pos.Top(password),Width=Dim.Width(loginText)};//Addsomecontrols,win.Add(//Theoneswithmyfavoritelayoutsystem,Computedlogin,password,loginText,passText,//Theoneslaidoutlikeanaustralopithecus,withAbsolutepositions:newCheckBox(3,6,"Rememberme"),newRadioGroup(3,8,newustring[]{"_Personal","_Company"},0),newButton(3,14,"Ok"),newButton(10,14,"Cancel"),newLabel(3,18,"PressF9orESCplus9toactivatethemenubar"));Application.Run();Application.Shutdown();上面的示例显示了使用Terminal.Gui支持的两种布局样式添加视图:绝对布局和计算布局。
评论