I have created LINKZ to provide the functionality that I require from a PIM/notes application. I wanted to be able to link any data item with any other data item.
Some examples:
- a contacts system where I could have a company record that contained address and switchboard details, linked to multiple individual contact records containing name, title, direct phone and mobile phone numbers.
- the ability to link to-do or appointment records to a contact record so I could jump straight to the contacts details from a ‘today’ view of items.
- the ability to structure and link notes as required
With LINKZ there are only two types of data record. These are the data items themselves and the links between two data items. Each data item is assigned a user-definable type (category) and has an optional data field.
The LINKZ screen shows either a single data item in the top half together with a list of all linked data items in the bottom half, or a list of data items matching a filter criteria. There are four buttons that are each used to provide filter views for a single user-definable item type. For example, I have these set so I can jump straight to a view showing just work contacts, appointments, to-do items, or note subjects. There is also a ‘today’ button that jumps straight to a view showing any item where the data field matches the current date.
A filter option sets the item list view to display items that match a filter specification that includes (a) an optional item type, (b) an optional date range, and (c) optional matching text in the data item.
You can jump directly to any item displayed in a list view. When a data item is selected, the link list at the bottom of the screen shows all items linked to the current data item. All links are bi-directional, ie, the link between two data items is shown when either of the two data items is shown in detail mode.
Here are some screenshots of the LINKZ application.
I have added a set of help notes into LINKZ. These are also reproduced here.
LINKZ is written in Python, uses the Sqlite database and the Anygui user interface. There is no simple install script, but I have provided full details of how to download and install LINKZ here.
When you first open LINKZ it will take about a minute to start up. However, once started the response is immediate. I do not find this a problem as it is always running on my Zaurus.
I have not provided any sync mechanism for LINKZ as I just use the data on my Zaurus. When I am in my office or at home, I access the Zaurus itself using a VNC connection from my office or home PC. To backup LINKZ you just need to copy the LINKZ Sqlite database file.
Since LINKZ uses Python, Sqlite and Anygui, you can also load these applications and LINKZ on to a PC and run it there using the database file copied from the Zaurus! This is truly portable software.
This is my first attempt at Zaurus and Python programming, so please take this into account if you look at the code. I chose to use Python because it looked to be much easier than C, and I also wanted to be able to do all the development directly on the Zaurus. I did use a telnet session from a PC so I did not have to edit with the tiny keyboard and screen. I also chose to use Anygui because I found the Qtopia documentation overwhelming. It does not have all the bells and whistles that a native Qt application might have, but it was easier to write and it will work on other platforms without Qtopia.
I would be pleased to hear user comments and suggestions. At this stage I am retaining copyright in the design and implementation, but it is freely available for use on the Zaurus platform. For the record, I am using a SL-5500 purchased in Australia, with the original Sharp ROM v2.35 (I think this is the UK ROM version).
Stephen Wilbourne
15 November 2003
mailto:linkz@lantanasystems.com.au