---------------------------------------------------------------------------

Copyright (c) 1994-7 Regents of the University of California

Permission to use, copy, modify, and distribute this software and its
documentation for any purpose, without fee, and without a written agreement
is hereby granted, provided that the above copyright notice and this
paragraph and the following two paragraphs appear in all copies.

IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR
DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING
LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS
DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.

THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO
PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.

---------------------------------------------------------------------------


PGACCESS 0.93 10 December 1998
================================
I dedicate this program to my little daughters Ana-Maria and Emilia and to my
wife for their understanding. I hope they will forgive me for spending so many
time far from them.



1.Why PgAccess ?

First of all because PostgreSQL lacks a graphical interface where you
can manage your tables, edit them, define queries, sequences and
functions.

I use Tcl/Tk because it's a powerful language, and it took me only
four days of hard work to get it as you see it now.



2.How to INSTALL ?

You will need Tcl/Tk package, I am using now Tcl 7.6 and Tk 4.2.
PgAccess is running fine also on Tcl/Tk 8.0

Also, you will need the PostgreSQL to Tcl interface library, lined as a
Tcl/Tk 'load'-able module.  It is called libpgtcl and the source is
located in the PostgreSQL directory /src/interfaces/libpgtcl. 
Specifically, you will need a libpgtcl library that is 'load'-able from
Tcl/Tk.  This is technically different from an ordinary PostgreSQL
loadable object file, because libpgtcl is a collection of object files.

Under Linux, this is called libpgtcl.so.  You will find a pre-compiled
copy of it for Linux i386 systems at : http://www.flex.ro/pgaccess. 
Just copy libpgtcl.so into your system library directory /usr/lib or
/lib and go for it.

Under Windows, copy libpgtcl.dll and libpq.dll into C:\WINDOWS\SYSTEM directory.
Make sure you have Tcl/Tk at least version 8.0.0 for Microsoft Windows 95 & NT.
PgAccess has been checked with Tcl/Tk 8.0.4 version on Windows95 and Windows98
platforms.

Tcl/Tk 8.0.4 for Windows95 & NT can be downloaded from 
ftp://ftp.scriptics.com/pub/tcl/tcl8_0/tcl804.exe
It is 1833712 bytes long.


3.How to run it?

You run it with the command:

        wish -f pgaccess.tcl [database]

[database] is optional.

Another way of loading the PostgreSQL library is running it with pgwish.
It's a wish compiled with libpgtcl library so it could understand the
commands for working with PostgreSQL. For this, remove the line "load
libpgtcl.so" from the source.  If your operating system has a different
library name or location, change the 'load libpgtcl.so' line in the
pgaccess.tcl file.


4.What does it now ?

- Opens any database on a specified host at the specified port, username and password
- Perform vacuum command.
- Saves preferences in ~/.pgaccessrc file

Tables
- opening multiple tables for viewing, max n records (configurable)
- column resizing by dragging the vertical grid lines
- text will wrap in cells now
- dynamic row height when editing
- table layout saved for every table
- import/export to external files (SDF,CSV)
- filter capabilities ,enter filter like price>3.14
- sort order capabilities ,enter manually the sort field(s)
- editing in place, double click the text you want to change
- record deleting , point the record, press Del key
- adding new records ,save new row with right-button-click on table for the moment
- table generator assistant
- table renaming and deleting (dropping)
- table information retrieving : owner, field information, indexes

Queries
- define, edit and store "user defined queries"
- save view layout
- can store queries as views
- execution of queries  with optional user input parameters ( select * from invoices where year=[parameter "Year of selection"] )
- viewing of select type queries result
- running action queries (insert, update, delete)
- visual query builder with drag & drop support, table aliasing

Sequences
- define
- inspect
- delete

Views
- defining them saving queries as views
- view them , with filtering and sorting capabilities
- delete them

Functions
- define , inspect , delete

Reports
- simple reports from a table (beta stage)
- change font,size and style of fields and labels
- load and save reports from the database
- table previews, sample postscript print

Forms
- open user defined forms
- form design module available
- query widget allowing access to a record set

Scripts
- define, modify and call user defined scripts

5.What it should do in the future ?

- sequence and function renaming
- more powerful report generator and viewer
- help on line



6. How you should report the errors?
First of all : operating system, PostgreSQL version,Tcl/Tk version.
A more detailed story of what have you done when error had occurred.
Tcl/Tk stops usually with a error message and there is a button there
"Stack Trace" and if you press it, you will see a detailed information
about the place where it stuck. Please send it to me.
Some information about table structure, no. of fields, records would
be also good.

===========================================================================
You would find always the latest version at   http://www.flex.ro/pgaccess

Please feel free to e-mail me with any suggestion or bug description
that will help to improve it.

Constantin Teodorescu <teo@flex.ro>

