################################################################################### Winzig - A Suite of PIM Style Applications wrtitten in Python/GTK Copyright (C) 2001-2005 Robert Muth This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of June 1991. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program in form of the file COPYING; if not, write to the Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA $Id: 00readme 378 2006-04-14 23:31:22Z muth $ ################################################################################### Summary ======= Winzig is a suite of PIM style applications written Python/GTK It was desgined with small code size and small screen real estate in mind so that it can be run one a PDA if necessary. A simple database engine provides a common infrastructure and a high level of configurability. The following applications are available: * Addressbook * Calculator * Calendar * Todolist * Ascii/Unicode table viewer * Notebook * Weather Station (using data from weather.noaa.gov) * X11 color viewer (Linux/BSD only) * Clock (only standalone) All applications are standalone and can be invoked directly or from the winzig shell. Winzig requires Python 2.2 or higher. Winzig uses the pygtk bindings to access GTK. They can be obtained from http://pygtk.org Quickstart ========== After unpacking the archive (*.zip for Windows and *.gz for Linux/BSD) just run "./winzig.py". A notepad widget should appear with a tab for each application. Lots of tooltip help is availble: Just leave the mouse cursor over a widget you are curious about and wait a little. All applications can be run standalone as well, they can be configured by editing "wconfig.py". Note for Linux/BSD users ======================== The Python interpreter should be called "python2" and reside in the user's PATH. This can be changed by editing the first line in "winzig.py".) Alternatively, you can invoke the python interpreter directly, e.g.: /usr/bin/python2 winzig.py The environment variable "WINZIG_DATA_PATH" can be used to point winzig to a directory where all the data files are stored. Winzig supports the usual GTK/X11 commandline options such as -display, etc. However, since gtk does not support a -geometry option directly, winzig has implemented its own. This may causes problems with some window managers such as fvwm2. You will have to add the "UsePPostion" style to make it work. Calculator ========== An infix notation calculator operating in one of 4 modes: *int* 32 bit *long* arbitrary precision integer arithemtic *float* floating point arithmentic (double precission) (*complex* not implemented yet) A history of previously computed values that can be used in computations ($0,$1,$2,...) operators binary: +, -, *, /, ^ (power), |, &, @ (xor) unary: + - sin cos tan ... All operations are left associative (including the power operator "^") Values can be specified in hex or octal using the C conventions Output can be formated using printf style format specs Calendar ======== A simple calendar with day, month, and week view. The alarm function does not work yet. Ascii ===== A browser for the characters defined by the unicode standard. Todolist ======== A simple todolist manager using the database engine. Notebook ======== This application lets one create, manage, edit, and organize short textfiles. The text files can be organized by tagging them with arbitrary labels Contact ======= A simple contact manager using the database engine. (This application is in fact a universal viewer/editor for winzig database files. When invoked stand alone, a database file can specified in the commandline. ) It has three subwindows: Browser ------- Shows all (filtered) database records in a browsable fashion, one record per row. To save screen space not all attributes of a record are shown. Column widths can be changed by dragging the column title borders. Clicking on a column title will sort the record by that column Clicking on a row will presented the corresponding record in the Editor. [TODO: describe filtering mechanism] Editor ------ This window shows a database record in more detail in form of tag/field pairs. Existing records can be changed and deleted. New records can be created. Required attributes are marked with a "*". This window shows all the attributes in a browsable form, one attribute per row. The attribute used for sorting the records can be selected by its tag. Database Terminology ==================== field - a string record - a tuple of fields. All record of a database must have the same tuple structure (non static) attribute - a description of the record components. All attributes hava a name. Attributes can be flagged as required in which case the corresponding component of a record must not be the empty string tags - abbreviations for the name of an attribute (static) attribute - database meta information Database File Format ==================== A database is stored as a text file and can be modified with a regular editor. The file contains both the schema of the database and the actual data records. The file is ascii Currently chema creation/changes can only be preformed with an editor. An example database file is show below. All lines starting with # are comments. The first block of lines describes the attributes, one per line. It is followied by two actual records. ---------------------------- Sample Database File ----------------------- # # Winzig Database # Edit with care! # ti name(title) static() value(AddressBook) ve name(version) static() value($Id: 00readme 378 2006-04-14 23:31:22Z muth $) sk name(sort key) static() value(n1) se name(sort edit) static() list(c1,n1,p1,m1,p2) sb name(sort browse) static() list(n1,p1,m1,p2,c1) c1 name(Category) required() n1 name(Name) required() p1 name(Phone Home) p2 name(Phone Office) m1 name(Phone Mobile) c1 business n1 my company p2 800-555-8888 c1 private n1 Sample, Sam p1 666-777-5555 # # eof # ------------------------------------------------------------------------- Tags at the beginning of a line are used both to mark attributes and non empty fields in records. The following (static) attributes have a special meaning: ti - database name, used to set Winzig's window title bar ve - database version, not used by Winzig directly but useful for rcs versioning sk - tag used for the initial sort order in the Browser se - list of tags determining which record fields are shown in the Editor and in which order sb - list of tags determining which record fields are shown in the Browser and in which order ###################################################################################