Linux下的Mono运行的简单层级待办事项列表

在Linux操作系统中,寻找一个能够与Windows平台上的待办事项列表相媲美的应用程序一直是一个挑战。尽管有许多优秀的待办事项列表应用程序,但它们往往只支持Windows平台。本文将介绍一个简单的层级待办事项列表应用程序,它能够在Linux操作系统下通过Mono运行,为用户带来便利。

长久以来,一直在使用一个名为.dan.g的待办事项列表应用程序。它功能强大,是目前发现的最好的待办事项列表之一。然而,它只支持Windows平台,这无疑是一个缺点。尝试过在Linux上通过Wine运行它,但无法成功安装待办事项列表所需的msxml动态链接库。最近,得到了一台华硕Eee PC,一直在寻找一个能在其上运行的待办事项列表应用程序,但未能找到能够与.dan.g的待办事项列表相媲美的软件。尝试过在Wine下运行待办事项列表,但并不顺利,因此决定将TodolistPPC移植到Linux下的Mono上,并在Eee PC上运行。

代码

该项目包含两个命名空间:UI命名空间(uk.org.aspellclark.todolist)和数据命名空间(uk.org.aspellclark.todolist.engine)。从PocketPC待办事项列表(TodolistPPC)中重用了一些类。

数据命名空间目前只包含一个类。主任务类(CTask)包含了单个任务的所有数据。这个类有成员来从XML中读取和写入数据。这个类最初是由Kyle Tillman为他自己的Pocket PC TodoListViewer编写的。在TodoListPPC项目中对其进行了更新,并添加了将待办事项列表保存回文件的功能。现在这个类在Linux下的Mono上运行。

UI从MainForm类开始,这是应用程序的主窗口,包含菜单栏、状态栏和一个空的选项卡控件。是的,一个空的选项卡控件。在启动时没有加载任何待办事项列表。当创建或打开一个待办事项列表时,会创建一个新的TodolistCtrl,它被放置在选项卡控件中。

TodolistCtrl是一个自定义的用户控件,包含一个树形视图控件和一个面板。这个控件将待办事项列表的信息从文件加载到它的TreeView中。文件中的每个任务都被加载到一个TodolistTreeNode中,其中包含一个CTask对象。当在树形视图中选择(点击)一个任务时,从选定的TodolistTreeNode中提取CTask对象,并创建一个新的TaskDetails自定义用户控件。这个新控件显示选定任务的详细信息,并被放置在TodolistCtrl内的面板中。

AppVersion对象具有返回应用程序当前版本号(包括其alpha/beta状态)的函数。

这个项目包含了一些在所有项目中使用的类。它有一个CommonFunctions类,包含一些获取环境信息的通用函数。PreferencesXml对象允许应用程序的偏好设置存储在XML文件中,并在应用程序启动时重新加载。FontHandler对象仍在开发中,但将允许从嵌入式资源文件中加载字体并在UI中使用它们。

有趣的点

最让惊讶的是Mono项目WinForms实现的完整性,以至于可以使用icSharpCode的SharpDevelop来创建应用程序。这是一个不错的IDE,能够使用它让能够使用它的Windows表单设计器和调试器来编写应用程序。

然后可以使用nant和Mono(已经添加到SharpDevelop工具菜单中)编译应用程序,将可执行文件复制到Eee PC上,它“就这样工作”了。

必须对代码进行的调整以在Eee PC上运行的是:

Mono 1.2.2.1(在Eee PC上运行的版本)不支持StatusBar.Name属性。必须将这些注释掉。

还必须将MainMenu的构造更改为: this.mainMenu1 = new System.Windows.Forms.MainMenu(); 因为Mono 1.2.2.1会抛出一个缺失方法的异常。

遗憾的是,SharpDevelop每次打开WinForms设计器时都会自动将这些内容重新添加到代码中,所以必须不断删除它们。

这些是为了让它在Eee PC上的Mono上运行所必须做的两个更改。如果能在Eee PC上安装Mono 1.2.6,那么就不需要更改这两个项目,因为在Windows机器上使用Mono 1.2.6运行应用程序时,上述两个项目将保持不变。

已知问题

详细信息标签需要显示更多的细节。 想添加一些嵌入式字体。

1.0.0(alpha)(2007年12月20日) 移植到Mono后的第一个公开版本 这还不适合实际使用,但可能对人们查看他们的待办事项列表有用

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485