Terminal.Gui —— .NET 跨平台终端 UI 工具包
Terminal.Gui 是适用于 .NET 的跨平台终端 UI 工具包。
特性
- 跨平台:支持 Windows、Mac 和 Linux。Curses、Windows 控制台和 .NET 控制台的终端驱动程序意味着应用程序在彩色和单色终端上都能正常运行。
- 键盘和鼠标输入:支持键盘和鼠标输入,包括拖放支持。
- 灵活布局:支持绝对布局和创新的计算布局系统 (Computed Layout)。Computed Layout 使控件之间的相对布局变得容易,并支持动态终端 UI。
- 支持剪贴板:剪切、复制和粘贴通过
Clipboard
类提供的文本。 - 任意视图:所有可见的 UI 元素都是
View
类的子类,而这些子类又可以包含任意数量的 sub-views。 - 高级应用程序功能:主循环支持处理事件、空闲处理程序、计时器和监控文件描述符。大多数类对于 threading 是安全的。
- 响应式扩展 (Reactive Extensions):使用响应式扩展并受益于提高的代码可读性,以及应用 MVVM 模式和 ReactiveUI 数据绑定的能力。
示例代码
using Terminal.Gui; using NStack; Application.Init(); var top = Application.Top; // Creates the top-level window to show var win = new Window("MyApp") { X = 0, Y = 1, // Leave one row for the toplevel menu // By using Dim.Fill(), it will automatically resize without manual intervention Width = Dim.Fill(), Height = Dim.Fill() }; top.Add(win); // Creates a menubar, the item "New" has a help menu. var menu = new MenuBar(new MenuBarItem[] { new MenuBarItem ("_File", new MenuItem [] { new MenuItem ("_New", "Creates new file", null), new MenuItem ("_Close", "",null), new MenuItem ("_Quit", "", () => { if (Quit ()) top.Running = false; }) }), new MenuBarItem ("_Edit", new MenuItem [] { new MenuItem ("_Copy", "", null), new MenuItem ("C_ut", "", null), new MenuItem ("_Paste", "", null) }) }); top.Add(menu); static bool Quit() { var n = MessageBox.Query(50, 7, "Quit Demo", "Are you sure you want to quit this demo?", "Yes", "No"); return n == 0; } var login = new Label("Login: ") { X = 3, Y = 2 }; var password = new Label("Password: ") { X = Pos.Left(login), Y = Pos.Top(login) + 1 }; var loginText = new TextField("") { X = Pos.Right(password), Y = Pos.Top(login), Width = 40 }; var passText = new TextField("") { Secret = true, X = Pos.Left(loginText), Y = Pos.Top(password), Width = Dim.Width(loginText) }; // Add some controls, win.Add( // The ones with my favorite layout system, Computed login, password, loginText, passText, // The ones laid out like an australopithecus, with Absolute positions: new CheckBox(3, 6, "Remember me"), new RadioGroup(3, 8, new ustring[] { "_Personal", "_Company" }, 0), new Button(3, 14, "Ok"), new Button(10, 14, "Cancel"), new Label(3, 18, "Press F9 or ESC plus 9 to activate the menubar") ); Application.Run(); Application.Shutdown();
上面的示例显示了使用 Terminal.Gui 支持的两种布局样式添加视图:绝对布局和计算布局。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
每日一博 | 语雀桌面端技术架构实践
作者:易芝林(维骏) 语雀桌面端作为语雀为用户提供的生产力工具,上线两年多来一直保持高频的迭代和健康的业务增长。本次主要介绍我们在做桌面端时的一些技术架构思考和实践,同时也将分享我们沉淀的一些通用桌面应用解决方案和经验。 文章会分为四部分,首先会简单介绍语雀桌面端,然后介绍当前语雀桌面端的应用架构以及关键点,之后介绍架构中的几个架构重点项,最后在进行总结。 语雀桌面端介绍 语雀是孵化自蚂蚁体验技术部的一款笔记与文档知识库工具。我们在两年前,针对语雀用户特点,以及后续发展策略,旨在为创作者提供更好的创作体验,推出语雀桌面客户端。 相较于现有浏览器提供的产品服务而言,我们提供的桌面端产品主要考虑以下几点: 无干扰 :给用户一个沉浸式的创作体验,而不像浏览器有其他窗口、tab 进行干扰,以及用完即走的用户心智。 系统级常驻 :打开速度更快,可以一键启动或者利用各类快捷工具唤起。 集成更多操作系统能力 :提升创作效率的多窗口、系统菜单和快捷键、对文件读写、与系统软件集成等。 离线 :期望能在离线或弱网的情况下,无障碍的进行创作。 桌面端架构概览 研发测主要分为左边三层,最底层是语雀的基础设施,...
- 下一篇
挑战杜比视界、杜比全景声,Google 将推出开放媒体格式
作为 VP9 和 AV1 编码格式的主导者,Google 又打算在编解码领域做出一番新的动作了,根据外媒 Protocol 的报道,Google 把目光投向了杜比视界和杜比全景声,计划推出能与两者竞争的视频和音频编码格式。 杜比视界和杜比全景声是目前影音行业里最为知名的两个编码格式(与杜比视界类似的格式还有三星主导的 HDR10/HDR10+),很多流媒体平台(Netflix、Disney+ 和 HBO Max 均已支持)以及院线上映的电影都将支持这两项标准作为卖点,甚至还有以此标准搭建的杜比影院(Dolby Cinema)。除了影视内容,如今也有越来越多的显示设备(如电视、显示器、手机和平板等)支持这两个标准。 Google 希望可以在一个新的消费者认可的品牌下,通过引入两种新的媒体格式从而提供 HDR 视频和 3D 音频,硬件制造商不需要为这两种格式支付授权费(就跟目前的 AV1 编码格式类似),而杜比全景声和杜比视界都需要支付授权费。 Google 的这项计划被称为 Project Caviar,从 Google 的角度来看,要推出新的编解码格式也很符合常理。首先 Google ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Mario游戏-低调大师作品
- 2048小游戏-低调大师作品
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Red5直播服务器,属于Java语言的直播服务器