Home
Project Ideas
Below are some random things I'd like to do when I get time.
Feel free to contact me (andybalaam BZZT artificialworlds.net) if you'd
like to help with implementing them or fleshing out the ideas.
Gnome TV Guide
A conversion of my FreeGuide project to Python and GTK+/Gnome.
The implementation would be in the form of a back end library and several front ends.
Back end library
This would provide functions to:
- Supply Programme and Channel data on demand, from the storage area (see next point). This could either
be by specific methods, e.g. getProgrammes( channel, start_time,
end_time ) which returns all the programmes on the given channel which
end after start_time and begin before end_time (this would be used by
the main channel view), getSelectedProgrammes( start_time, end_time )
which returns all the selected programmes in a given time period (used
by the personalised guide - maybe getSelectedProgrammes( channel_set,
start_time, end_time )), getProgrammesMatching( favourite, start_time,
end_time) used by the search function, etc. or simply using SQL queries, or both could be offered and the specific methods simply hide the SQL behind a nicer interface.
- Read
in XMLTV input data and store in appropriate storage area. This
could be either Pickle'd Python objects, or (better?) inserting them
into an SQL database, probably using SQLite so we don't introduce any new external dependencies. We would need a Python SQLite wrapper, such as PySQLite.
- Supply a list of favourites, add or remove a favourite
- Supply a list of channel sets, add or remove a channel set
- Change the status of a programme - changing the items in_guide, remind and record.
- Supply
the commands used to run the grabber, browser etc. and alter
them. The specific storage for this data would probably be in
Gnome's GConf registry, but this would be hidden, so interchangeable
backends could be used using a different storage mechanism.
- Delete Programme and Channel data older than a given date.
Downloader front end
This would be designed to be called nightly by cron, and would download
new listings (presumably using the XMLTV grabbers - commands provided
by the back end), and tell the back end to process and store them in
the storage area. Stored data would be compared with the list of
favourites and any default settings of in_guide, remind or record
status would be set for each programme. Any programmes which are
on today and which have reminders would be set up in cron or some other
timer system to pop up at the right time. Similarly, any
programmes which need recording would be set in cron for the process to
start at the right time.
Reminder front end
This would
pop up a reminder of a programme. It would probably not need to
access the back end as the programme name etc. could be supplied as
command line arguments.
Main front end
This would show the actual guide to what is on TV - it would have at least these tabs visible on the main screen:
- FreeGuide
style "StripView" showing programmes from all channels on a horizontal
time line, with an optional personalised guide and programme details
panel.
- Single-channel view that has a dropdown for which
channel to show and what date (synchronised with the previous panel?),
and lists the details of all the programmes on that channel today in an
HTML view like the personalised guide. Possibly instead of this
show a simple list of titles and have a programme details panel that
shows the details of the title you have clicked on.
- Search
tab that allows you to see programmes matching a given string in their
title or description, and at certain times (e.g. "after now").
This searches the entire storage area.
- (Maybe?) A vertical view like some web sites and other guides that is very similar to the horizontal guide, but vertical.
The program would obviously remember all sorts of things about the
visual appearance of the screen etc. including what tab you were on
when you exited.
It would also have dialog boxes for editing favourites, channel sets, and options similar to FreeGuide.
All
the GUI code would be completely isolated from the program logic, so
that different GUIs could be plugged in (e.g. a Windows GUI?). An
exception to this might be that each View (in MVC terms) might be both
GUI code and logic for that view. Might be good to separate even
that.
Gnome Photo Conversion Wizard
A front end to the excellent Unix convert command in the form of a very easy to understand wizard with the following screens:
- Welcome
- Choose
photos - like a graphical file chooser that shows the photos you've
chosen, and those you might choose, as actual pictures.
- Choose
tasks (rename) - Tick boxes for tasks like Resize, Change Format, and
maybe others like Average, Number of Colours, Crop, etc. Each of
these that the user ticks will launch a little mini-wizard which asks
its own questions and either supplies options for the convert command,
or options for another command (e.g. one day The Gimp) to perform its
translation back to the main program. Imagine we ticked resize
and change format:
- Change Size - you can preview a single
image (with little arrows to view the other ones you chose) and you can
click and drag to resize, and tick a box to allow it to go out of
proportion, and type in the size. Display file size of the
currently previewed file.
- Change format - you get a preview
with a tick box to show it actual size (in a panel with scroll bars)
and a dropdown to choose what format to convert to. Display file
size of the currently previewed file. The preview shows the size
chosen in the previous window (when actual size box is ticked).
- Output
filenames (rename) - show a list of input path and their output paths -
allow the user to add a prefix, a suffix and an output directory.
Gnome Task Scheduler
A front end to crontab - able to load and save the user's or the system crontab file. Quite simple.
Has this been done by someone else?