#! /usr/bin/perl # # Copyright (c) 2007 Olaf Dietsche # Version: 0.1 # # Converts a Palm ToDoDB.pdb to an Emacs Orgmode todo list. This perl # script needs the p5-Palm package, which is available at: # . # # If you use debian, you may install the libpalm-perl Package # available at: use strict; use warnings; use Palm::PDB; use Palm::StdAppInfo; use Palm::ToDo; use Getopt::Long; my $help; my $heading = "* Todo"; my $rc = GetOptions("heading=s" => \$heading, "noheading" => sub { $heading = ''; }, "help|?" => \$help, ); if (!$rc || $help || $#ARGV < 0) { print STDERR "usage: $0 [--noheading] [--heading='* Todo'] ToDoDB.pdb\n"; exit(2); } sub dump_record { my($pdb, $record) = @_; my $done = $record->{completed} ? "DONE" : "TODO"; print "** $done"; my $priority = $record->{priority}; my $prio; $prio = "A" if ($priority <= 1); $prio = "C" if ($priority >= 3); print " [#$prio]" if ($prio); my $desc = $record->{description}; print " $desc"; my $date; if (defined($record->{due_day})) { $date = sprintf("<%04d-%02d-%02d>", $record->{due_year}, $record->{due_month}, $record->{due_day}); } print " $date" if ($date); print "\n"; my $note = $record->{note}; print "$note" if ($note); } my $pdb = new Palm::PDB; print "$heading\n" if ($heading); for my $f (@ARGV) { $pdb->Load($f); my $records = $pdb->{records}; for (@{$records}) { print "\n"; dump_record($pdb, $_); } }