在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后的第一个公开版本 这还不适合实际使用,但可能对人们查看他们的待办事项列表有用