Linux 待办事项列表。






4.59/5 (14投票s)
专为 Asus Eee Pc 设计的简单待办事项列表。

引言
这个应用程序是一个简单的分层待办事项列表,可以在 Linux 和 Mono 下运行。
安装 Mono
要在 eee pc 上安装 mono,你需要按照 此处的关于添加 Xandros 仓库的教程进行操作。
然后你可以使用以下命令安装 mono
sudo apt-get install mono monodoc mono-devel mono-gmcs mono-mcs mono-utils
背景
我已经使用了 .dan.g 的 ToDoList 相当长一段时间了。它是一个很棒的待办事项列表,我再也找不到其他能与之媲美的了。
但是,它只能在 Windows 上运行,这是一个缺点。我尝试在 Linux 上使用 wine 运行它,但无法弄清楚如何“安装”待办事项列表所需的 msxml DLL。我最近得到了一台 Asus eee PC,一直在寻找一个可以在其上运行的待办事项列表。我没有找到任何可以与 dan.g 的待办事项列表相媲美的。我尝试在 wine 下运行待办事项列表,但并不容易,所以我决定将我的 TodolistPPC 移植到 Linux 和 Mono 下运行,并在 Eee PC 上运行它。
目前,它可以读取 dan.g 的待办事项列表版本 5.3.11 的文件。我可能会继续读取和写入 dan.g 的文件,但很可能不会。我认为我将扩展这个应用程序,并开始在 Windows 的 Mono 下将其用作我的主要待办事项列表。
代码

这个项目有两个命名空间:UI 命名空间 (uk.org.aspellclark.todolist
) 和一个独立的用于数据的命名空间 (uk.org.aspellclark.todolist.engine
)。我重用了我为 Pocket PC 编写的待办事项列表 (TodolistPPC) 中的一些类。
引擎命名空间(目前)只包含一个类
主任务类 (CTask
) 包含单个任务的所有数据。此类具有将数据读写到/从 XML 的成员。此类最初由 **Kyle Tillman** 为他的 Pocket PC TodoListViewer 编写。我在我的 TodoListPPC 项目中更新了它并添加了将待办事项列表写回的功能,现在该类在 Linux 的 Mono 下运行。

UI 以 MainForm
类开始。此类是应用程序的主窗口,包含一个菜单栏、状态栏和一个空的选项卡控件。
是的,一个空的选项卡控件。它一开始是空的,因为启动时没有加载任何待办事项列表。当创建或打开一个待办事项列表时,会动态创建一个包含 TodolistCtrl
的新 TabPage
,并将其放置在选项卡控件内。
TodolistCtrl
是一个自定义 UserControl
,包含一个树视图控件和一个面板。此控件将待办事项列表信息从文件加载到其 TreeView
中。文件中的每个任务都加载到一个 TodolistTreeNode
中,该节点包含一个 CTask
对象。当在树视图中选择(单击)一个任务时,CTask
对象将从选定的 TodolistTreeNode
中提取,并创建一个 TaskDetails
自定义 User Control。这个新控件显示所选任务的详细信息,并被放置在 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(我在我的 eeePc 上运行的版本)不支持 StatusBar.Name
属性。我必须将它们注释掉。
我还必须将 MainMenu 的构造从this.mainMenu1 = new System.Windows.Forms.MainMenu(this.components);
更改为this.mainMenu1 = new System.Windows.Forms.MainMenu();
因为 mono 1.2.2.1 会抛出方法未找到异常。
可惜的是,SharpDevelop 每次我打开 Winforms 设计器时都会自动将这些(代码)重新放回去,所以我必须不断地删除它们。
这是我为了在我的 eeePc 上的 Mono 上运行而必须做的仅有的两处更改。如果我能在 eee 上安装 mono 1.2.6,那么我应该不必更改这两项,因为在我的 Windows 机器上的 Mono 1.2.6 上执行应用程序时,这两项将保持不变。
已知问题
- 详细信息选项卡需要显示更多信息
- 我想添加一些嵌入字体
历史
- 1.0.0 (alpha) (2007 年 12 月 20 日)
- 移植到 mono 后的第一个公开版本
这还不能真正使用,但它可能对人们查看他们的待办事项列表有用
- 移植到 mono 后的第一个公开版本
- 1.0.1 (alpha) (2008 年 1 月 5 日)
- 添加了保存待办事项列表的功能(但尚未测试重新加载它们)
- 1.1.0 (beta) (2008 年 1 月 20 日)
- 添加了在应用程序启动时重新加载打开的待办事项列表的功能