diff --git a/src/bin/pgaccess/doc/html/a_right.gif b/src/bin/pgaccess/doc/html/a_right.gif new file mode 100644 index 00000000000..386e27c304f Binary files /dev/null and b/src/bin/pgaccess/doc/html/a_right.gif differ diff --git a/src/bin/pgaccess/doc/html/addindex.gif b/src/bin/pgaccess/doc/html/addindex.gif new file mode 100644 index 00000000000..2ff0aa2084e Binary files /dev/null and b/src/bin/pgaccess/doc/html/addindex.gif differ diff --git a/src/bin/pgaccess/doc/html/api.html b/src/bin/pgaccess/doc/html/api.html new file mode 100644 index 00000000000..7630fd2054d --- /dev/null +++ b/src/bin/pgaccess/doc/html/api.html @@ -0,0 +1,232 @@ + + +
+ + + + + +That's why PgAccess 0.98 has been internally restructured, every main
+module of PgAccess has became a namespace (see Tcl namespaces) in order
+to hide the variables and internal procedures to the user. Also, all the
+global variables that have been used before were grouped under a single
+big associative array called PgAcVar (PgAccess variables) so they
+should not interfere with user defined global variables.
+
+
+
Global variables available
+
+
PgAcVar | + +The main global associative array that hold together various information +needed by PgAccess. User should NOT +alter it under any circumstances. | +
CurrentDB | + +The handler of the current opened database. Can be used for database +operations as selects or command execution. | +
Messages | + +The associative array that holds the translation for the current +language. Loaded from the appropriate language file from lib/languages +directory | +
PGACCESS_HOME | + +Keep the system directory of PgAccess root installation | +
Window naming convention +
Every toplevel window defined by PgAccess has the following naming convention. +Every window name starts with .pgaw (PgAccess window) followed +by a colon and a name. Example: +
.pgaw:User , .pgaw:About , .pgaw:ImportExport+Namespaces available +
For every tab from the main database window there is a namespace defined +(Tables, Queries, Views, Functions, Sequences, Reports, Forms, Scripts, +Users, Schema). Every namespace has by default the following procedures: +
Tables::open "customers" ++The Tables::open procedure accepts two optional parameters, filter +and order. +
Queries::open "Invoices received" +
Forms::open "Add new invoice"
Tables::open "phonebook" "name ~* 'joe'" "age desc"+will open a table view window with predefined filter "name ~* 'joe'" and +ordered by descending age. +
There is also a special namespace called Database. Here are some
+procedures and functions defined for this namespace available to the user:
+
+
Name | + +Parameters | + +Type | + +Returns | + +Description | +
vacuum | + +none | + +procedure | + +nothing | + +vacuums the current database | +
getTablesList | + +none | + +function | + +list | + +returns the list of tables from the current database | +
executeUpdate | + +sqlcmd | + +function | + +integer | + +execute the sqlcmd command on the current database returning +1 if no errors ocurred or 0 if the command failed | +
Global functions available
+
+
Name | + +Parameters | + +Description | +
setCursor | + +type | + +Set the cursor for all PgAccess windows, type of cursor can +be WAIT or CLOCK or WATCH for the hourglass , anything else (or none) to +return to the normal cursor shape | +
parameter | + +msg | + +Shows a modal input dialog with the msg message, wait for user +to enter the data and returns it as a string | +
showError | + +msg | + +Shows a modal dialog window with an error message | +
+ + | + + | + |
+ + | + + | + |
+ + | + + | + |
+ + | + + | + |
+ + | + + | + |
+ + | + + | + |
+
Other links
+PostgreSQL
+
Visual Tcl
+
Tcl/Tk
+
Linux
+
vTcLava
+
+
diff --git a/src/bin/pgaccess/doc/html/copyright.html b/src/bin/pgaccess/doc/html/copyright.html
new file mode 100644
index 00000000000..d67654b88e7
--- /dev/null
+++ b/src/bin/pgaccess/doc/html/copyright.html
@@ -0,0 +1,39 @@
+
+
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.
+
+
diff --git a/src/bin/pgaccess/doc/html/documentation.html b/src/bin/pgaccess/doc/html/documentation.html
new file mode 100644
index 00000000000..48d3fa5ec14
--- /dev/null
+++ b/src/bin/pgaccess/doc/html/documentation.html
@@ -0,0 +1,19 @@
+
+
+
Still need to be written. Some information can be found in the help +included in the main program. +
Jim Lemon <Jim.Lemon@uts.EDU.AU> has started writing a tutorial. +Thought it is based on earlier versions than 0.98 it is a beginning after +all, isn't it ? + + diff --git a/src/bin/pgaccess/doc/html/download.html b/src/bin/pgaccess/doc/html/download.html new file mode 100644 index 00000000000..efbe7bf50aa --- /dev/null +++ b/src/bin/pgaccess/doc/html/download.html @@ -0,0 +1,42 @@ + + +
+ + + + + +Another one (just with a little bit faster, try this one first) would +be : +
Versions of PostgreSQL prior to 6.5.1 couldn't reliably detect +the presence of the crypt library on RedHat 5.x systems. That's why the +libpgtcl library does not include reference to crypt. You will need to +get a proper copy of libpgtcl.so library or to compile one. Go to the postgresql +source directory into src/interfaces/libpgtcl and edit Makefile adding +-lcrypt to the end of the line SHLIB_LINKS. Make clean and make again. +Your libpgtcl.so is now prepare to run PgAccess. I strongly recommend you +to upgrade to PostgreSQL 6.5.1 where this problem has been solved.+2. I cannot connect to a database from another machine +
There may be two problems here. First of all, PgAccess running +on the localhost is using two PostgreSQL dependent libraries, libpq and +libpgtcl. Each of them are compiled for a specific PostgreSQL version. +If the PostgreSQL version running on your server is different you might +experience problems. The other problem is related to access rights. On +the PostgreSQL server, in data directory there is a file pg_hba.conf that +will grant access rights to users based on host authentication. Ask your +database administrator to check if your workstation is listed there with +the appropriate access rights. Try for the beginning the 'trust' mode, +allowing full access to the databases.+3. I am experiencing core dumps when trying to run PgAccess. Is PgAccess +broken? +
No. There were NEVER reported crashes because of PgAccess. +All of them were related to bad libraries usage. The most frequent was +the installing of a new PostgreSQL on a RedHat 5.x server where the postgresql-clients +rpm still exists. So, PgAccess was trying to use the old libpgtcl.so library +suitable for an older version of PostgreSQL. Before installing a new PostgreSQL +(either by compiling it ot by rpm packages) remove ANY TRACE of old PostgreSQL. +PgAccess is fully relying on libpgtcl library in order to get access to +the database so when you are experiencing that kind of problems, double-check +libpq and libpgtcl libraries.+4. When I try to run PgAccess I get the following error : Application +initialization failed: couldn't connect to display "" +
That kind of error was reported on some Linux RedHat 5.x systems +when user has su - to root and tried to run PgAccess. Some unknown errors +in login scripts are not defining the DISPLAY environment and the wish +application cannot connect to the X display. Try typing export DISPLAY=localhost:0.0 +and run PgAccess again.+5. Cannot run PgAccess on a Windows machine. +
In order to use PgAccess on Windows you must have installed +two libraries libpq.dll and libpgtcl.dll suitable for your Tcl/Tk package +and your PostgreSQL server. Note that libraries that work with Tcl/Tk 8.0.x +won't work with Tcl/Tk 8.1.x and libraries that work with 6.4.2 backend +won't work with 6.5.x. So, you must properly identify your Tcl/Tk package +version and your PostgreSQL version and download from the Downloads section +(or pick from the win32/dll directory of PgAccess distribution) the right +files. Copy them into your Windows/System directory and try again. Also, +you should be able to access over the network the machine running the PostgreSQL +server (try ping-ing it) and have the proper access rights to the database.+6. How much costs PgAccess? +
PgAccess is a free tool. You won't have to pay anything in +order to use it. It is protected by the following copyright +as PostgreSQL is. I cannot guarantee technical support but I will try to +answer to your questions as much as I can.+7. I want to translate PgAccess messages for xxx language. What should +I do? +
In the PgAccess distribution in lib/languages directory there +are files with messages translated for different languages. Copy one of +them and name it after your native language and then start editing it translating +all the messages. Save it into the same directory and that's all. Don't +forget to send me a copy in order to include it into the standard distribution.+ +
8. I am receiving the following error: message invalid command
+name "namespace" while executing "namespace eval Mainlib ..."
+
That means 100% that you have an older version of Tcl/Tk that +don't recognize namespaces command. Please upgrade to Tcl/Tk 8.0.x minimum+ +
PgAccess API for developing small applications
+ This version (0.97) of PgAccess has changed the form API : variable
+handling, query results interface and control bindings naming convention.
+Please read it carefully, download the database demo and practice a while
+before trying to design your own forms.
+ For the moment, it has only some basic widgets : labels, entries, buttons
+, listboxes , checkboxes and radiobuttons.
+ Also there is a pseudo data control widget that allows you yo have access
+to a query results.
+ How do you generate widgets :
+ Renaming, resizing items are possible (for the moment) only by modifying
+appropriate parameters in attribute window. You must press Enter
+in the edit field after changing a value in order to be accepted.
+ You can also move items by dragging them or delete them by pressing
+Del key after selecting them.
+ In attribute window, there are some fields named Command
+and
+Variable.
+ The field Command have meaning
+only for Button widgets and holds the command that will be invoked when
+the button is pressed.
+ The field Variable have
+meaning only for EditField , Label widgets , checkboxes and radiobuttons
+and it is the name of the global variable that will hold the value for
+that widget. For checkboxes the values are t and f (from
+true and false) in order to simplify binding to logical data fields (PgAccess
+0.82 used 0 and 1).
+ For radiobuttons, it is usual to assign the same
+variable to the same radiobuttons within the same group. That variable
+will contain the name of the widget of the radiobutton that has been pressed.
+Let's presume that you have entered 3 radiobuttons named red, green and
+blue, all of them having the same variable named color. If you will press
+them, they will assign their names to global variable.
+ In order to make a simple test, put an entry field
+and set it's variable to v1 and a button who's command is "set v1
+whisky". Press the button "Test form" and click on the button. In that
+entry should appear whisky.
+ Also, any widget created inside this window (form) will have the name
+prefixed by .mf ,so we will have .mf.button1
+or .mf.listbox1 .
+ We can name the data control widget dc for example.
+The fully qualified name for that "virtual widget" will be .mf.dc
+then. A new namespace called DataControl(.mf.dc) will be
+automatically defined.
+ open - opens the connection and execute the query (returns
+nothing)
+ These procedures and functions should be called in the normal Tcl namespace
+mode as in the following example:
+ DataControl(.mf.dc)::setSQL "select * from phonebook"
+ If you complaint about writting to many DataControl(...) you can include
+many commands into a single namespace eval as in the following example
+:
+ namespace eval DataControl(.mf.dc) {
+ It's no need to close a query-result set if you want to assign it a
+new SQL command and open it again. That will be done automatically releasing
+the memory used for the last result set.
+ Example:
+ If you want to bound some controls to the fields of the recordset, you
+will have to name their associate variable like that :
+ DataSet(.mf.dc,salary) to get the "salary" field , or
+DataSet(.mf.dc,name) to get the "name" field. Using the
+data control procedures DataControl(.mf.dc)::moveNext or
+movePrevious will automatically update the DataSet(.mf.dc,...)
+array so the database information from entries in the form will be refreshed.
+ Here it is a dumped sample database
+that contains a demo database. What should you do ?
+ You should find a single table called "phonebook" a form called "Phone
+book" and another "A simple demo form".
+ First of all enter and view the phonebook table in table view. Note
+the fields and their values.
+ In order to add a new record, press the "New" button in order to get
+new, clean entries. Fill them with your data and press "Add new" button.
+A new phonebook record will be added. Also, if you want to update a record,
+change it's values in the displayed fields after finding it and press "Update"
+button. The values will be updated in the database BUT NOT IN THE CURRENT
+QUERY RESULT . If you want to see them modified, make a new query trying
+to find it again.
+ Before using the results from a query you should
+know that the information that has been retrieved could be found only in
+your computer client memory. It has no live connection to the data
+from the database. That's why it isn't possible to develop a simple update
+function as interface to that query-result widget. More than that : a query
+result could be obtained from a SQL command that return a non-updatable
+data set !!! For example fields gathered from multiple tables or summary
+fields. It isn't just simple to make an automatic update procedure. The
+programmer must know how to make the update or the append procedure, sometimes
+using key fields to point to the desired record or an OID. There are examples
+in the demo database in "Phone book" form. It may be possible that in the
+future, I will develop another pseudo-widget describing a table. It would
+be more simple than to implement an update or append or even a delete procedure.
+ There is in the demo database also another simple form called "A simple
+demo form". It will show you how to handle variables from checkboxes, radiobuttons,
+how to use listboxes, open another forms and so on. I think they will help
+you.
+ In order to avoid naming user defined forms with a particular
+name of another PgAccess form, I would recommend naming them as udf0, udf1
+(user defined form 0 , 1 )
+
+ Please feel free to send me your opinion at teo@flex.ro on forms
+designing and usage.
+ KEEP IN MIND !
+THE FORM API MAY CHANGE IN ORDER TO BE MORE SIMPLE AND BETTER!
+ This HOWO-TO make PgAccess working under Irix
+is written by Stuart Rison These are the steps that I had to follow to get pgaccess to run on an
+INDIGO2 running postgreSQL 6.3.2 under IRIX 5.3. I make no guarantee whatsoever
+that the same step will work for others but at least it should point you
+in the right direction. Also, I am a biologist by training so I only got
+pgaccess working by fudging (that is, trial and error) this means that
+some of the steps may be unnecessary (e.g. compiling $postgreSQL_source/src/interfaces/libpgtcl
+as both a shared and static library) and they certainly haven't been optimised
+(I know nothing about compiler switches etc.). 1) Requirements: You will need: 2) Installation: a) tcl/tk: You must first install tcl and then tk (in that order). I just used
+./configure, no switches and gmake. Their installation should be trouble
+free. Then you must move headers and libraries to the right places so: Header files: both tcl and tk have a header file (tcl.h and tk.h). The
+tcl.h file is in $tcl_source_dir/generic and the tk.h file is in $tk_source_dir/generic;
+both should be copied to /usr/local/include. Libraries: compilation (with cc) of tcl and tk yield libraries libtcl8.0.a
+and libtk8.0.a in $source_dir/unix. Both should be copied to /usr/local/lib. b) postgreSQL: Make sure you have a fully patched postgreSQL source. If your ./configure
+says it can't load 'IRIX' settings then you most probably will need to
+patch ./configure. Configure using ./configure with the following switches: ./configure
+--with-includes=/usr/local/include --with-libraries=/usr/local/lib --with-tcl [this and previous line as
+one] Then make, make install as usual c) Compiling libpgtcl: The source for libpgtcl is in $postgreSQL_directory/src/interfaces/libpgsql. I do this twice. Once with just gmake. This produces a static library
+libpgtcl.a which I leave where it is (I don't know what to do with it but
+it may just come in handy). The I modify Makefile manually with a text
+editor. Essentially I modify two line: before: # Shared library stuff install-shlib-dep := shlib := after: # Shared library stuff install-shlib-dep := install-shlib shlib := libpgtcl.so.1 Then gmake -f Makefile_modified. This creates two shared (.so) libraries:
+libpgtcl.so and libpgtcl.so.1. I can't tell the difference between them
+so I copied them both to /usr/lib/. d) running pgaccess: Uncompress pgaccess (usually with gunzip and tar). So long as 'wish'
+(a binary produced when compiling tk8.0) is somewhere in your path, you
+should be able to run pgaccess with: wish -f $pgaccess_dir/pgaccess.tcl [postgreSQL_database_name] e) et voila! 3) Concluding remarks: As I stated at the start of this document, following the procedure indicated
+above worked for me. I am sure, however, that a few of the steps are unnecessary/non-optimised/stupid
+etc. If any Unix (IRIX) boffin is reading this and you spot anything you
+would like to comment/correct etc. please e-mail me (stuart@ludwig.ucl.ac.uk).
+Also, if you just have questions and think I might help, please contact
+me at the same e-mail. Finally, I can accept no responsibility if these steps don't work for
+you or if it all goes horribly wrong and you 'damage' your computer trying
+them. Let common sense prevail! Good luck Stuart Rison LICR University College London London W1P 8BT The mailing list for PgAccess is : pgsql-interfaces@postgresql.org If you have some questions regarding PgAccess you should mail to this
+address. I will also answer to messages addresed directly to me but it
+would be better to post your messages here because it might be possible
+to get an answer quickly from another user of PgAccess.
+
+
+
diff --git a/src/bin/pgaccess/doc/html/formdemo.sql b/src/bin/pgaccess/doc/html/formdemo.sql
new file mode 100644
index 00000000000..73bf1c5027f
--- /dev/null
+++ b/src/bin/pgaccess/doc/html/formdemo.sql
@@ -0,0 +1,216 @@
+\connect - teo
+CREATE SEQUENCE "cities_id_seq" start 7 increment 1 maxvalue 2147483647 minvalue 1 cache 1 ;
+SELECT nextval ('cities_id_seq');
+CREATE TABLE "pga_queries" (
+ "queryname" character varying(64),
+ "querytype" character,
+ "querycommand" text,
+ "querytables" text,
+ "querylinks" text,
+ "queryresults" text,
+ "querycomments" text);
+CREATE TABLE "pga_forms" (
+ "formname" character varying(64),
+ "formsource" text);
+CREATE TABLE "pga_scripts" (
+ "scriptname" character varying(64),
+ "scriptsource" text);
+CREATE TABLE "pga_reports" (
+ "reportname" character varying(64),
+ "reportsource" text,
+ "reportbody" text,
+ "reportprocs" text,
+ "reportoptions" text);
+CREATE TABLE "phonebook" (
+ "name" character varying(32),
+ "phone_nr" character varying(16),
+ "city" character varying(32),
+ "company" bool,
+ "continent" character varying(16));
+CREATE TABLE "pga_layout" (
+ "tablename" character varying(64),
+ "nrcols" int2,
+ "colnames" text,
+ "colwidth" text);
+CREATE TABLE "pga_schema" (
+ "schemaname" character varying(64),
+ "schematables" text,
+ "schemalinks" text);
+REVOKE ALL on "pga_schema" from PUBLIC;
+GRANT ALL on "pga_schema" to PUBLIC;
+CREATE TABLE "cities" (
+ "id" int4 DEFAULT nextval('"cities_id_seq"') NOT NULL,
+ "name" character varying(32) NOT NULL,
+ "prefix" character varying(16) NOT NULL);
+CREATE FUNCTION "getcityprefix" (int4 ) RETURNS varchar AS 'select prefix from cities where id = $1 ' LANGUAGE 'SQL';
+COPY "pga_queries" FROM stdin;
+Query that can be saved as view S select * from phonebook where continent='usa' \N \N \N \N
+\.
+COPY "pga_forms" FROM stdin;
+Working with Tables namespace f3 13 {3 4 5 6 7 9 10 11 12 13} 377x263+59+127 {radio usa {36 24 138 36} {} USA selcont} {radio europe {36 45 141 60} {} Europe selcont} {radio africa {36 66 147 81} {} Africa selcont} {label label6 {9 99 339 114} {} {Select one of the above continents and press} {}} {button button7 {270 93 354 117} {Tables::open phonebook "continent='$selcont'" $selorder} {Show them} {}} {button button9 {66 189 312 213} {Tables::design phonebook} {Show me the phonebook table structure} {}} {button button10 {141 228 240 252} {destroy .f3} {Close the form} {}} {button button11 {93 141 282 165} {Tables::open phonebook "company=true"} {Show me only the companies} {}} {radio name {183 24 261 36} {} {Order by name} selorder} {radio phone_nr {183 45 267 57} {} {Order by phone number} selorder}
+A simple demo form asdf 14 {FS {set color none}} 370x310+50+75 {label label1 {15 36 99 57} {} {Selected color} {} label1 flat #000000 #d9d9d9 1} {entry entry2 {111 36 225 54} {} entry2 color entry2 sunken #000000 #fefefe 1} {radio red {249 21 342 36} {} {Red as cherry} color red flat #900000 #d9d9d9 1} {radio green {249 45 342 60} {} {Green as a melon} color green flat #008800 #d9d9d9 1} {radio blue {249 69 342 84} {} {Blue as the sky} color blue flat #00008c #d9d9d9 1} {button button6 {45 69 198 99} {set color spooky} {Set a weird color} {} button6 ridge #0000b0 #dfbcdf 2} {label label7 {24 129 149 145} {} {The checkbox's value} {} label7 flat #000000 #d9d9d9 1} {entry entry8 {162 127 172 145} {} entry8 cbvalue entry8 sunken #000000 #fefefe 1} {checkbox checkbox9 {180 126 279 150} {} {Check me :-)} cbvalue checkbox9 flat #000000 #d9d9d9 1} {button button10 {219 273 366 303} {destroy .asdf} {Close that simple form} {} button10 raised #000000 #d9d9d9 1} {button button11 {219 237 366 267} {Forms::open "Phone book"} {Open my phone book} {} button11 raised #000000 #d9d9d9 1} {listbox lb {12 192 162 267} {} listbox12 {} lb sunken #000000 #fefefe 1} {button button13 {12 156 162 186} {.asdf.lb insert end red green blue cyan white navy black purple maroon violet} {Add some information} {} button13 raised #000000 #d9d9d9 1} {button button14 {12 273 162 303} {.asdf.lb delete 0 end} {Clear this listbox} {} button14 raised #000000 #d9d9d9 1}
+Working with listboxes f2 5 {FS {set thestudent ""}} 257x263+139+147 {listbox lb {6 6 246 186} {} listbox1 {} lb sunken #000000 #ffffd4 1} {button button2 {9 234 124 258} {# Populate the listbox with some data\
+#\
+\
+foreach student {John Bill Doe Gigi} {\
+\ .f2.lb insert end $student\
+}\
+\
+\
+\
+# Binding the event left button release to the\
+# list box\
+\
+bind .f2.lb
+FORMS
+
+
+
+
+In the rectangle that you have designed it will appear the selected object.
+
Move now to the attribute window to change some of its properties.
+
Another test is defining in Script module a script called "My first
+script" having the following commands:
+
tk_messageBox -title Warning -message "This is my
+first message!"
+
and then define a button who's command is execute_script
+"My first script".
+
+
+Database manipulation
+Let's presume that our form have the internal name mf (my
+form). Don't forget that the Tk window names could not start with
+an uppercase letter.
+
The window will be referred inside the Tcl/Tk source as .mf
+
If you want to close the form in run-time you have to issue the command
+destroy
+.mf
+
The Command property of the data control widget must
+contain the SQL command that will be executed.
+
When the form will be in run-time, automatically you will have access
+to the following procedures and functions from the namespace:
+
setSQL newsql - set the command query that will be
+executed at the next open
+
getRowCount - returns the number of records of the
+result set
+
getRowIndex - returns the current record number inside
+the result set
+
getFieldList - returns a Tcl list containing the fields
+names from the current result set
+
moveFirst - move the cursor to the first record in
+the recordset
+
moveLast , moveNext , movePrevious-
+moves the cursor there
+
moveTo newrecno - move the cursor to that new record
+number (first is 0)
+
updateDataSet - update the variables inside the designed
+form that have a particular name (I'll explain later)
+
clearDataSet - clear the associated DataSet variables
+
fill listbox field - fill the named listbox (whole
+widget name as .mf.listbox1) with the all the values of
+that field from the current result set
+
close - close the result set (if
+you don't close it, you will loose some memory)
+
DataControl(.mf.dc)::open
+
set nrecs [DataControl(.mf.dc)::getRowCount]
+
setSQL "select * from phonebook"
+
open
+
set nrecs [getRowCount]
+
moveLast
+
updateDataSet
+
}
+
Opening a new DataControl will automatically position the current
+row index of the result set on the first row (index 0) and will define
+a new global associative array named DataSet that will hold data
+from the current row. The key into that array will be the fully qualified
+name of the data control widget followed by a comma and the name of every
+field in the selected rows.
+
DataSet(.mf.dc,name)
+
DataSet(.mf.dc,city)
+
+
Shift-click the above URL in order to download that tiny file (4 Kb).
+Create a empty database and psql yourdatabase <formdemo.sql
+
Open the "Phone book" form and enter a letter (a, e or i) in the field
+to the left of "Find" button then press Find. It's fine to enter one letter
+in order to get more records in query result. You will get information
+about the number of records selected, in the listbox you will see all the
+values of field "name" from the current data set. Use buttons to move to
+first, next, previous or last record within the record set.
+
+
SEND ME YOUR WISHES, YOUR IDEAS, YOUR OPINIONS !
+
ALSO ... DON'T BLAME ME IF YOU WILL HAVE TO RE-DESIGN
+YOUR OLD FORMS DUE TO SOME INCOMPATIBILITIES WITH NEWER PGACCESS VERSIONS.
+
+
diff --git a/src/bin/pgaccess/doc/html/function.gif b/src/bin/pgaccess/doc/html/function.gif
new file mode 100644
index 00000000000..51634e5df9d
Binary files /dev/null and b/src/bin/pgaccess/doc/html/function.gif differ
diff --git a/src/bin/pgaccess/doc/html/help.gif b/src/bin/pgaccess/doc/html/help.gif
new file mode 100644
index 00000000000..f08fee8fd38
Binary files /dev/null and b/src/bin/pgaccess/doc/html/help.gif differ
diff --git a/src/bin/pgaccess/doc/html/index.html b/src/bin/pgaccess/doc/html/index.html
new file mode 100644
index 00000000000..7ccda192907
--- /dev/null
+++ b/src/bin/pgaccess/doc/html/index.html
@@ -0,0 +1,11 @@
+
+INSTALLING PgAccess UNDER IRIX 5.3.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+stuart@ludwig.ucl.ac.uk
To subscribe please send a mail message to :
+ +pgsql-interfaces-request@postgresql.org +
+ +having a single line in the body message : subscribe
+ +In a couple of minutes , if everything is ok, you must receive something +like that :
+ ++
Welcome to the pgsql-interfaces mailing list!
+ +Please save this message for future reference. Thank you.
+ +If you ever want to remove yourself from this mailing list, you +can send mail to <Majordomo@hub.org> with the following command in +the body of your email message:
+ +unsubscribe pgsql-interfaces yourname@yourdomain
+ + + diff --git a/src/bin/pgaccess/doc/html/main.html b/src/bin/pgaccess/doc/html/main.html new file mode 100644 index 00000000000..2bddfd61d4a --- /dev/null +++ b/src/bin/pgaccess/doc/html/main.html @@ -0,0 +1,34 @@ + + + + + + + + +Last version
+
Last stable version is 0.98 , released on 29 August 1999. Read what's
+new in 0.98.
+
Portability issues
+
PgAccess is available for every platform where PostgreSQL was ported
+and where a Tcl/Tk package is available. PgAccess has been reported running
+on :
+
- Linux
+
- FreeBSD
+
- Solaris
+
- HPUX
+
- Irix
+
- Windows 95,98,NT
+
PgAccess needs Tcl/Tk versions 8.0.x and higher thought PgAccess. For +win32 platforms there are some special DLL's that have to be downloaded +and installed, more information here. +
PgAccess is protected by the following copyright. + + diff --git a/src/bin/pgaccess/doc/html/mainwindow.gif b/src/bin/pgaccess/doc/html/mainwindow.gif new file mode 100644 index 00000000000..6a48792d194 Binary files /dev/null and b/src/bin/pgaccess/doc/html/mainwindow.gif differ diff --git a/src/bin/pgaccess/doc/html/newtable.gif b/src/bin/pgaccess/doc/html/newtable.gif new file mode 100644 index 00000000000..891d05698f9 Binary files /dev/null and b/src/bin/pgaccess/doc/html/newtable.gif differ diff --git a/src/bin/pgaccess/doc/html/newuser.gif b/src/bin/pgaccess/doc/html/newuser.gif new file mode 100644 index 00000000000..5c56c9ad299 Binary files /dev/null and b/src/bin/pgaccess/doc/html/newuser.gif differ diff --git a/src/bin/pgaccess/doc/html/old_index.html b/src/bin/pgaccess/doc/html/old_index.html new file mode 100644 index 00000000000..4bbf11fcf07 --- /dev/null +++ b/src/bin/pgaccess/doc/html/old_index.html @@ -0,0 +1,143 @@ + + +
+ + +
Latest stable version of PgAccess is 0.97 , released 16 August 1999
+!
+
PgAccess 0.93 and higher will not work from the beginning
+with PostgreSQL 6.3.x !!
+
Read here how to apply a
+simple patch in order to make it work !
NEW | + +International version +(english, french, italian, romanian) | +
NEW | + +Context sensitive Help | +
Precompiled libpgtcl and libpq binaries and dll's for i386 are here +!!!
Tables
+
- opening multiple tables for viewing, max. n records (changed by preferences
+menu)
+
- column resizing, dragging the vertical grid line (better in table
+space rather than in the table header)
+
- text wrap in cells - 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
+
- improved table generator assistant
+
- improved field editing
+
Queries
+
- define , edit and stores "user defined queries"
+
- 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
+
- query deleting and renaming
+
- visual query builder with drag & drop capabilities. For any of
+you who had installed the Tcl/Tk plugin for Netscape Navigator, you can
+see it at work clicking here
+
Sequences
+
- defines sequences, delete them and inspect them
+
Functions
+
- define, inspect and delete functions in SQL, plpgsql and pgtcl languages
+
Reports
+
- design and display simple reports from tables
+
- fields and labels, font changing, style and size
+
- saves and loads report description from database
+
- show report previews, sample postscript output file
+
Forms
+
- open user defined forms
+
- form design module available
+
- query widget available, controls bound to query results
+
- click here for a description of forms and
+how they can be used
+
Scripts
+
- define, modify and call user defined scripts
+
Users
+
- define and modify user information
+
Here is a special section concerning forms and +scripts . +
This program is protected by the following copyright +
If you have any comment, suggestion for improvements, please feel free +to e-mail to : teo@flex.ro +
Mailing list for PgAccess Here +you will find how to subscribe to this mailing list. +
+
One of the solutions is to remove from the +source the line containing load libpgtcl.so and to load pgaccess.tcl +not with wish, but with pgwish (or wishpg) that wish that was linked with +libpgtcl library! I do not recommend this one. +
If you have installed RedHat 5.x, you should +get the last distribution kit of PostgreSQL and compile it from scratch. +RedHat 5.x is using some new versions of libraries and you have to compile +and install again at least libpq and libpgtcl libraries. +
PostgreSQL 6.4 release has a minor bug. I does not
+include by default the crypt lib when compiling libpgtcl. So, you will
+need to manually add a -lcrypt to SHLIB line in Makefile in src/interfaces/libpgtcl
+and then make clean and make again. The new libpgtcl.so library is properly
+configured to run pgaccess.
+
+
+
diff --git a/src/bin/pgaccess/doc/html/permissions.gif b/src/bin/pgaccess/doc/html/permissions.gif
new file mode 100644
index 00000000000..06c43491e07
Binary files /dev/null and b/src/bin/pgaccess/doc/html/permissions.gif differ
diff --git a/src/bin/pgaccess/doc/html/pg93patch.html b/src/bin/pgaccess/doc/html/pg93patch.html
new file mode 100644
index 00000000000..4c77bfac61b
--- /dev/null
+++ b/src/bin/pgaccess/doc/html/pg93patch.html
@@ -0,0 +1,25 @@
+
+
+
PgAccess 0.93 is working fine with PostgreSQL 6.4.x due to some
+changes in libpgtcl !
+
There is a small patch that you have to make in order to make it work +with 6.3.x ! +
Replace in procedure wpg_exec the following line: +
set pgsql(errmsg) [pg_result $pgsql(res) -error] +
with this one : +
set pgsql(errmsg) "NO ERROR INFORMATION SUPPLIED" +
And it will work fine! In some error cases, you will not get the appropriate +error message from libpgtcl. +
Back + + diff --git a/src/bin/pgaccess/doc/html/pga-rad.html b/src/bin/pgaccess/doc/html/pga-rad.html new file mode 100644 index 00000000000..7564cf7b553 --- /dev/null +++ b/src/bin/pgaccess/doc/html/pga-rad.html @@ -0,0 +1,65 @@ + +
+ + + + + + This would give to PgAccess the power of creating application
+directly into PgAccess, defining new modules, procedures, forms and possibly
+making it a rapid development tool for PostgreSQL. The "scripts" and "forms"
+modules are using two new tables called pga_forms and pga_scripts. PgAccess
+take care of creating them if user is opening a new database and grant
+ALL permissions on them to PUBLIC.
+
+
Of course, when Designing a script, a simple text editor
+is opened and text is saved as is in pga_scripts table. When "designing"
+a form, a "form editor" that would be very similar with "Visual Tcl" is
+invoked.
+
+
This mechanism and the extremely versatile scripting mode +of Tcl/Tk would give PgAccess a great power for creating end user application +using PostgreSQL. The most important thing is that the user could call +procedures and functions that I have used for building up PgAccess ! +
+
+
+ +
+ +The problem is related with some special characters used in different +countries because PgAccess did not use fonts with `-ISO8859-1' encoding +--
+ +The sollution was proposed by H.P.Heidinger ( hph@hphbbs.ruhr.de) and +it's very simple.
+ +If you look into PgAccess, you will find fonts declared as follows :
+ +$ grep -e '-font' -i pgaccess.tcl
+-font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* \
+-font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* \
+-font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* \
+-font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* \
It should be something like: -adobe-helvetica-medium-r-normal-*-*-120-*-*-*-*-iso8859-1
+ +You can achieve this by running the following script :
+ +#!/bin/sh
+cp pgaccess.tcl pgaccess.tcl-org
+cat pgaccess.tcl |\
+sed -e's/\-\*\-\*\ /\-iso8859\-1\ /g' |\
+sed -e's/\-\*\-\*\}/\-iso8859\-1}/g' |\
+sed -e's/\-\*\-\*\]/\-iso8859\-1]/g' |\
+sed -e's/\-\*\-\*$/\-iso8859\-1/g' |\
+sed -e's/\-Clean\-/\-Fixed\-/g' |\
+sed -e's/clean/fixed/g' >pgaccess.iso
+mv pgaccess.iso pgaccess.tcl
+chmod +x pgaccess.tcl
The final version of PgAccess (1.0) will let the user decide what fonts +will be used through a "preferences" dialog window.
+ + + diff --git a/src/bin/pgaccess/doc/html/todo.html b/src/bin/pgaccess/doc/html/todo.html new file mode 100644 index 00000000000..f19b61ab90c --- /dev/null +++ b/src/bin/pgaccess/doc/html/todo.html @@ -0,0 +1,11 @@ + + ++Obviously, you must have PostgreSQL installed and running, and Tcl/Tk on +your system before you can use PgAccess.
+PgAccess is an "open source" application. The source code is available to the +user, and may be modified by the user. The user can fix a bug, or change the +way a function operates. You may not want to get that involved with the +programming, but you have the option to do so. If you feel you have made an +improvement to the program, you are encouraged to share it with other users.
+If you are not familiar with how open source software can be altered and +redistributed, please read this.
+
+If you have any questions regarding PgAccess you should subscribe to this
+list in the following way:
+First subscribe to the list by sending an email message to:
+pgsql-interfaces-request@postgresql.org
+Send a single line in the body of the message as follows:
+subscribe
+In a short time you should receive a message beginning like this:
+Welcome to the pgsql-interfaces mailing list!
+This will contain instructions on how to remove yourself from the mailing
+list, so save that message. You may only want to ask a few questions and then
+stop receiving messages.
+You may also email Constantin Teodorescu
+directly, although writing to a mailing list with many correspondents will often
+produce a quicker answer.
+Back to index
+
diff --git a/src/bin/pgaccess/doc/html/tutorial/irix.html b/src/bin/pgaccess/doc/html/tutorial/irix.html
new file mode 100644
index 00000000000..7d472aa9cdc
--- /dev/null
+++ b/src/bin/pgaccess/doc/html/tutorial/irix.html
@@ -0,0 +1,133 @@
+
+
+ This HOWO-TO make PgAccess working under Irix
+is written by Stuart Rison These are the steps that I had to follow to get pgaccess to run on an
+INDIGO2 running postgreSQL 6.3.2 under IRIX 5.3. I make no guarantee whatsoever
+that the same step will work for others but at least it should point you
+in the right direction. Also, I am a biologist by training so I only got
+pgaccess working by fudging (that is, trial and error) this means that
+some of the steps may be unnecessary (e.g. compiling $postgreSQL_source/src/interfaces/libpgtcl
+as both a shared and static library) and they certainly haven't been optimised
+(I know nothing about compiler switches etc.). 1) Requirements: You will need: 2) Installation: a) tcl/tk: You must first install tcl and then tk (in that order). I just used
+./configure, no switches and gmake. Their installation should be trouble
+free. Then you must move headers and libraries to the right places so: Header files: both tcl and tk have a header file (tcl.h and tk.h). The
+tcl.h file is in $tcl_source_dir/generic and the tk.h file is in $tk_source_dir/generic;
+both should be copied to /usr/local/include. Libraries: compilation (with cc) of tcl and tk yield libraries libtcl8.0.a
+and libtk8.0.a in $source_dir/unix. Both should be copied to /usr/local/lib. b) postgreSQL: Make sure you have a fully patched postgreSQL source. If your ./configure
+says it can't load 'IRIX' settings then you most probably will need to
+patch ./configure. Configure using ./configure with the following switches: ./configure
+--with-includes=/usr/local/include --with-libraries=/usr/local/lib --with-tcl [this and previous line as
+one] Then make, make install as usual c) Compiling libpgtcl: The source for libpgtcl is in $postgreSQL_directory/src/interfaces/libpgsql. I do this twice. Once with just gmake. This produces a static library
+libpgtcl.a which I leave where it is (I don't know what to do with it but
+it may just come in handy). The I modify Makefile manually with a text
+editor. Essentially I modify two line: before: # Shared library stuff install-shlib-dep := shlib := after: # Shared library stuff install-shlib-dep := install-shlib shlib := libpgtcl.so.1 Then gmake -f Makefile_modified. This creates two shared (.so) libraries:
+libpgtcl.so and libpgtcl.so.1. I can't tell the difference between them
+so I copied them both to /usr/lib/. d) running pgaccess: Uncompress pgaccess (usually with gunzip and tar). So long as 'wish'
+(a binary produced when compiling tk8.0) is somewhere in your path, you
+should be able to run pgaccess with: wish -f $pgaccess_dir/pgaccess.tcl [postgreSQL_database_name] e) et voila! 3) Concluding remarks: As I stated at the start of this document, following the procedure indicated
+above worked for me. I am sure, however, that a few of the steps are unnecessary/non-optimised/stupid
+etc. If any Unix (IRIX) boffin is reading this and you spot anything you
+would like to comment/correct etc. please e-mail me (stuart@ludwig.ucl.ac.uk).
+Also, if you just have questions and think I might help, please contact
+me at the same e-mail. Finally, I can accept no responsibility if these steps don't work for
+you or if it all goes horribly wrong and you 'damage' your computer trying
+them. Let common sense prevail! Good luck Stuart Rison LICR University College London London W1P 8BTHow to get help with PgAccess
+The mailing list for PgAccess is: pgsql-interfaces@postgresql.org
+...INSTALLING PgAccess UNDER IRIX 5.3.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+stuart@ludwig.ucl.ac.uk
+Error connecting database
+Connection to database failed
+connectDB() failed: Is the
+postmaster running and
+accepting TCP/IP (with -i)
+connections at 'localhost' on
+port '5432'?
+This usually occurs because the "postmaster" (the postgreSQL backend) was not +started with the -i option. Usually just adding -i to +the command line that starts the postmaster and restarting will fix this.
+If you have installed the prewritten script to start postgreSQL +automatically, this option is (currently) commented out:
+# PGOPTS="-i"
+just remove the hash and space and comment out the "blank" option above:
+PGOPTS=""
+
+Error connecting database
+See User Administration in the PgAccess tutorial for a description
+of how to create users.
+
+ftp://ftp.flex.ro/pub/pgaccess
+is one place that you can download precompiled libpgtcl libraries for
+PgAccess.
+
+
+One solution was proposed by H.P.Heidinger ( hph@hphbbs.ruhr.de) and
+is very simple.
+If you look in the file pgaccess.tcl, you will find the fonts declared in
+this manner:
+$ grep -e '-font' -i pgaccess.tcl
+-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-iso8859-1
+That is, inserting an asterisk between the first pair of hyphens, and changing
+the final two asterisks to iso8859 and 1
+respectively.
+You can alter the source code by running the following script :
+ #!/bin/sh
+The final version of PgAccess (1.0) will let the user decide what fonts
+will be used through a "preferences" dialog window.
+In the procedure wpg_exec change the following line:
+set pgsql(errmsg) [pg_result $pgsql(res) -error]
+to this:
+set pgsql(errmsg) "NO ERROR INFORMATION SUPPLIED"
+and the program will work. The only disadvantage is that with some error
+conditions, you will not get the appropriate error message from libpgtcl.
+Back to index
+
diff --git a/src/bin/pgaccess/doc/html/tutorial/screen1.jpg b/src/bin/pgaccess/doc/html/tutorial/screen1.jpg
new file mode 100644
index 00000000000..572b5077d10
Binary files /dev/null and b/src/bin/pgaccess/doc/html/tutorial/screen1.jpg differ
diff --git a/src/bin/pgaccess/doc/html/tutorial/sel_tbl.jpg b/src/bin/pgaccess/doc/html/tutorial/sel_tbl.jpg
new file mode 100644
index 00000000000..548dbeead37
Binary files /dev/null and b/src/bin/pgaccess/doc/html/tutorial/sel_tbl.jpg differ
diff --git a/src/bin/pgaccess/doc/html/tutorial/start.html b/src/bin/pgaccess/doc/html/tutorial/start.html
new file mode 100644
index 00000000000..8ad8c2ae18f
--- /dev/null
+++ b/src/bin/pgaccess/doc/html/tutorial/start.html
@@ -0,0 +1,74 @@
+
+http://www.flex.ro
+The home page will contain instructions on which files to download for your
+operating system. Download the file to a directory where the program will
+eventually reside (see below).
+
+
+pgaccess-n.nn.tar.gz
+Note that "n.nn" will be the version number in an actual file.
+First decide where you want to have the program. A typical location on UNIX
+systems is /usr/local/src/<name>, where <name> is the name of
+the program. To use this location, download or move the "tar.gz" file to the
+directory /usr/local/src. Change to that directory, and
+uncompress the file with the command:
+tar -zxvf pgaccess-n.nn.tar.gz
+You should see the files listed as they are uncompressed and placed in the new
+directory, and now have a directory named:
+/usr/local/src/pgaccess
+In that directory will be all of the files that were packaged in the downloaded
+file. When you have PgAccess working, you can delete the file with the ".tar"
+or ".tar.gz" extension.
+
+
+echo $PATH
+Usually the directory /usr/local/bin will be in your PATH, and that
+is a fairly common place to put programs like PgAccess. Other common
+directories in the PATH are /usr/bin and /usr/sbin.
+Simply move the file "pgaccess.tcl" to the directory where you want it.
+
+pgaccess.tcl
+If the program has been placed in a directory listed in the PATH, the PgAccess
+window should appear.
+
+pgaccess name "PgAccess"
+This assumes that you have an "Applications" sub-menu. You may prefer
+"Programs" or some other place. Also, you will have to create the
+"mini-pgaccess.xpm" icon if you want it to appear. You can edit an existing
+icon from the /usr/share/icons/mini directory in XPaint and rename
+it. When you next start an X-Windows session, there should be a "PgAccess" item
+on the menu that you have chosen. Clicking on this item should start
+PgAccess.
+Back to index
+
diff --git a/src/bin/pgaccess/doc/html/tutorial/tut.html b/src/bin/pgaccess/doc/html/tutorial/tut.html
new file mode 100644
index 00000000000..e5387e618df
--- /dev/null
+++ b/src/bin/pgaccess/doc/html/tutorial/tut.html
@@ -0,0 +1,50 @@
+
+su postgres
+Then create a new user:
+createuser jim
+You can use either the UNIX user ID or the postgres ID to identify users. See
+the postgreSQL documentation in the "admin" section for a fuller
+account of users and groups.
+To remove users, use the destroyuser command in the same way.
+
+Press the New button to bring up the window shown below. This will
+allow you to specify the structure of the new table. It is important to note
+that if you haven't specified a database when starting up PgAccess, this table
+will be created in the database named <username>, your
+username.
+Assume that you want to create a table with entries describing bibliographic
+references in the field of chemistry. Choose a table name, such as
+chemref that will be easy to recall and find in a list. Enter the
+table name in the first input field.
+When you already have tables in a database, you can use the Inherits
+button to toggle a list of existing tables to inherit characteristics of another
+table. In this example, there should be no previous tables to use.
+Enter each field, giving it a name, field type and size, if the field type does
+not imply the size. That is, if your first field was to be a sequence number,
+and you selected int2 as the field type, you would not have to specify
+a field size. However, if your second field was to contain the author of the
+reference, and was a varchar type, you would have to specify how many
+characters would be allowed in the field.
+As you enter each field, click the Add field button to add it to the
+list at the right side of the window. You can change the position of fields
+using the Move field up and Move field down buttons, or delete
+a field if you decide it isn't what you wanted. When you are finished
+specifying fields, press the Create table button.
+
+The most straighforward way to add records to a table is to type the information
+directly into the fields. Two records have been entered in the table shown. As
+is common with this user interface, clicking the mouse while the pointer is in a
+field will allow keyboard entry to that field. This type of entry is adequate
+when the information arrives infrequently in small parcels, for instance in
+keeping a table of contact information about other researchers. However, what
+do you do when someone emails you the entire reference list for their doctoral
+dissertation?
+This is best handled using the SQL COPY command.
+First, the information will have to be massaged into shape in what is called a
+'flat' ASCII file. This is simply a text file in which each line is a record,
+and each field in each record is separated by a delimiter such as a
+tilde (~). The fields will have to be in the same order as those in your table,
+and there will have to be the same number of fields in each record as are in the
+table, otherwise you may get unexpected data or no data at all. Say you produce
+a text file named newref.txt that starts like this:
+Cassileth, BR~Unorthodox Cancer Medicine~Cancer Investigation~~1986~4~6~591-598
+
+Notice that there are two consecutive tildes to allow for the fact that this
+particular entry doesn't have anything in the Editor field.
+You can then perform a Query as follows:
+COPY psyref FROM '/home/jim/newref.txt' USING DELIMITERS
+'~';
+This will read the records from newref.txt and insert them into the
+table psyref. See the PostgreSQL documentation under the headings
+
+
+Click the Tables and New buttons to bring up the window shown
+below. This will allow you to specify the structure of the new table. It is
+important to note that if you haven't specified a database when starting up
+PgAccess, this table will be created in the database named
+<username>, your username.
+Assume that you want to create a table with entries describing bibliographic
+references in the field of psychology. Choose a table name, such as
+psyref that will be easy to recall and find in a list. Enter the
+table name in the first input field.
+When you already have tables in a database, you can use the Inherits
+button to toggle a list of existing tables to inherit characteristics of another
+table. In this example, there should be no previous tables to use.
+Enter each field, giving it a name, field type and size, if the field type does
+not imply the size. That is, if your first field was to be a sequence number,
+and you selected int2 as the field type, you would not have to specify
+a field size. However, if your second field was to contain the author of the
+reference, and was a varchar type, you would have to specify how many
+characters would be allowed in the field.
+As you enter each field, click the Add field button to add it to the
+list at the right side of the window. You can change the position of fields
+using the Move field up and Move field down buttons, or delete
+a field if you decide it isn't what you wanted. When you are finished
+specifying fields, press the Create table button.
+
+The PostgreSQL documentation has a complete list of queries that can be
+used. We'll start with the common task of selecting records with certain
+characteristics.
+
+By clicking Query, then New, a Query builder window will
+appear. Clicking in the area below the buttons will allow the user to enter an
+SQL query. The specification of the query must be exact or
+PostgreSQL will return an error message.
+The query shown will SELECT those records from psyref
+that contain the word "alternative" anywhere in the title field. The
+'*' indicates that all of the fields are to be returned. You might only want to
+return, for instance, the author field if you were only interested in
+which authors had used that word in the title of their work.
+At the right is the record that fulfils these conditions, displayed in the
+Table viewer. If you wanted to save this query for use again,
+clicking the Save query definition button will do so. You will then
+see altern listed under Queries when you return to the main
+window. By clicking the Save this query as a view tickbox in the
+Query builder, the result of your query will be saved as a
+View which you can access from Views in the main window.
+Click the Close button to leave the Query builder.
+Back to index
+
diff --git a/src/bin/pgaccess/doc/html/tutorial/tut_user.html b/src/bin/pgaccess/doc/html/tutorial/tut_user.html
new file mode 100644
index 00000000000..c4a6f09fbb3
--- /dev/null
+++ b/src/bin/pgaccess/doc/html/tutorial/tut_user.html
@@ -0,0 +1,28 @@
+
+su postgres
+Then create a new user:
+createuser jim
+You can use either the UNIX user ID or the postgres ID to identify users. See
+the postgreSQL documentation in the "admin" section for a fuller
+account of users and groups.
+The reason for using the command line to create the first user (other than
+postgres) is that postgres may not have X-Window permission.
+You can also create users using PgAccess if you are created as a
+superuser as shown in the example above.
+
+Back to index
+
diff --git a/src/bin/pgaccess/doc/html/vdesigner.gif b/src/bin/pgaccess/doc/html/vdesigner.gif
new file mode 100644
index 00000000000..71349e6daf4
Binary files /dev/null and b/src/bin/pgaccess/doc/html/vdesigner.gif differ
diff --git a/src/bin/pgaccess/doc/html/whatsnew.html b/src/bin/pgaccess/doc/html/whatsnew.html
new file mode 100644
index 00000000000..f2faede0153
--- /dev/null
+++ b/src/bin/pgaccess/doc/html/whatsnew.html
@@ -0,0 +1,50 @@
+
+
+User not defined
+Initially, postgreSQL only has one user, postgres, and any
+other user who starts up PgAccess will get the message:
+Connection to database failed
+FATAL 1: SetUserId: user
+'jim' is not in 'pg_shadow'libpgtcl not found
+PgAccess requires a library of functions named libpgtcl. This
+should be available with the postgreSQL distribution, and is usually placed in
+the correct location when installing postgreSQL. First check that there is a
+file named libpgtcl.so (perhaps with a number appended - or
+libpgtcl.dll on Windows systems) on your
+system. If not, you will have to download and perhaps compile this library.Locale specific characters
+This problem occurs with some special characters used in different
+countries because PgAccess did not use fonts with `-ISO8859-1' encoding.
+-font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* \
+...
+...
+cp pgaccess.tcl pgaccess.tcl-org
+cat pgaccess.tcl |\
+sed -e's/\-\*\-\*\ /\-iso8859\-1\ /g' |\
+sed -e's/\-\*\-\*\}/\-iso8859\-1}/g' |\
+sed -e's/\-\*\-\*\]/\-iso8859\-1]/g' |\
+sed -e's/\-\*\-\*$/\-iso8859\-1/g' |\
+sed -e's/\-Clean\-/\-Fixed\-/g' |\
+sed -e's/clean/fixed/g' >pgaccess.iso
+mv pgaccess.iso pgaccess.tcl
+chmod +x pgaccess.tclProblem with PostgreSQL 6.3.x
+PgAccess 0.93 and later may have problems working with PostgreSQL 6.3.x.
+Changes in libpgtcl have been made to remove these, but if you are
+using PostgreSQL 6.3.x, this patch will allow you to get around the problems.PgAccess - Getting Started
+How to get PgAccess
+If you have this HTML help system, you have probably already downloaded
+PgAccess. If not, or you wish to download the latest version, it is available
+from the URL:How to uncompress PgAccess
+PgAccess, like most applications available for download, is usually downloaded
+in compressed format to save download time. You must uncompress these files in
+order to use the application.UNIX (Linux, BSD, IRIX, Solaris, etc.)
+The files will be compressed using "gzip" and packaged using "tar", and have
+filenames like this:Windows
+The files will be compressed so that "WinZip" will uncompress the package. Just
+open the file with "WinZip" and the program files will be extracted.Putting PgAccess where it will be found
+UNIX
+In order to run PgAccess easily, the program file "pgaccess.tcl" should be in a
+location on the "PATH" of the system. You can find out what the PATH is by
+entering:
+/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:./:/usr/local/pgsql/bin
+Windows
+You will usually link PgAccess to an icon, so just specify the full path to the
+program when you create the icon.
+Starting PgAccess
+The easiest way to start PgAccess is to simply invoke the program by name:Starting from a menu
+Most users will want to link the program to a menu or icon so that it can be
+started using the mouse or other pointing device. Here is a method that will
+work on most Linux X-Windows systems. Create a file named "pgaccess" in the directory
+/etc/X11/wmconfig with the following contents:
+pgaccess description "postgreSQL frontend"
+pgaccess mini-icon "mini-pgaccess.xpm"
+pgaccess group "Applications"
+pgaccess exec "pgaccess.tcl &"PgAccess - Tutorial
+User Administration
+The procedure for setting up postgreSQL usually results in a single user
+named postgres. In order for anyone else to use postgreSQL,
+users must be added. The program createuser accomplishes this.
+First become the PostgreSQL administrator (usually postgres):
+Enter user's postgres ID or RETURN to use unix user ID: 500 ->
+Is user "jim" allowed to create databases (y/n) y
+Is user "jim" a superuser? (y/n) n
+createuser: jim was successfully added
+
Basic use of PgAccess
+Creating a database
+At the right is the window you should see when PgAccess starts up. The first
+task for most users will be to create a database.
+Back to index
+
diff --git a/src/bin/pgaccess/doc/html/tutorial/tut_edit.html b/src/bin/pgaccess/doc/html/tutorial/tut_edit.html
new file mode 100644
index 00000000000..8282fb9a422
--- /dev/null
+++ b/src/bin/pgaccess/doc/html/tutorial/tut_edit.html
@@ -0,0 +1,39 @@
+
PgAccess Tutorial - Editing a table
+
+
Adding records
+Once you have a table, you can begin to add entries to it. In the main
+PgAccess window, when you click the Tables button, you should see the
+new table appear in the list of tables. Highlighting the table name by clicking
+on it and clicking on the Open button will open that table in another
+window, as shown below.
...
Tutorial|The Query Language|Populating a Class with Instances
+Back to index
+
diff --git a/src/bin/pgaccess/doc/html/tutorial/tut_new.html b/src/bin/pgaccess/doc/html/tutorial/tut_new.html
new file mode 100644
index 00000000000..8fca641e6c0
--- /dev/null
+++ b/src/bin/pgaccess/doc/html/tutorial/tut_new.html
@@ -0,0 +1,36 @@
+
PgAccess Tutorial - Creating a table
+
+
Creating a table
+At the right is the window you should see when PgAccess starts up. The first
+task for most users will be to create a database. Notice the 'buttons' at the
+left of the main window. Clicking on these allows you to see the names of
+different objects that are stored in your database, which should be
+empty at the moment.
+Back to index
+
diff --git a/src/bin/pgaccess/doc/html/tutorial/tut_sel1.html b/src/bin/pgaccess/doc/html/tutorial/tut_sel1.html
new file mode 100644
index 00000000000..fdadbe8e6d3
--- /dev/null
+++ b/src/bin/pgaccess/doc/html/tutorial/tut_sel1.html
@@ -0,0 +1,36 @@
+
PgAccess Tutorial - SELECT
+
+
What is a query?
+Query is the term for an SQL command which will perform an operation
+on a table. It is sometimes confusing to newcomers, as some of the operations
+seem to have nothing to do with querying in the common sense of asking.
+As we saw in the previous section, a query can simply copy
+records from an ASCII file to a table.Selecting records
+
+Suppose that I want to know all of the references in the sample table
+psyref for which the word "alternative" appeared in the title.
PgAccess Tutorial - User Administration
+While user administration is really not a part of the PgAccess program, it is
+such a basic operation that a brief description is given here.
+Creating users
+The procedure for setting up postgreSQL usually results in a single user
+named postgres. In order for anyone else to use postgreSQL,
+users must be added. The program createuser accomplishes this.
+First become the PostgreSQL administrator (usually postgres):
+Enter user's postgres ID or RETURN to use unix user ID: 500 ->
+Is user "jim" allowed to create databases (y/n) y
+Is user "jim" a superuser? (y/n) y
+createuser: jim was successfully addedRemoving users
+To remove users, use the destroyuser command in the same way.
+
+
+
+
diff --git a/src/bin/pgaccess/doc/html/win32.html b/src/bin/pgaccess/doc/html/win32.html
new file mode 100644
index 00000000000..368eb9990eb
--- /dev/null
+++ b/src/bin/pgaccess/doc/html/win32.html
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+PgAccess on Win32
+
+
In order to run PgAccess on a Win32 workstation you should follow the
+following steps:
+
+
+
+
You should be able to run PgAccess.
+
+
+
diff --git a/src/bin/pgaccess/images/icon_button.gif b/src/bin/pgaccess/images/icon_button.gif
new file mode 100644
index 00000000000..df705919211
Binary files /dev/null and b/src/bin/pgaccess/images/icon_button.gif differ
diff --git a/src/bin/pgaccess/images/icon_checkbutton.gif b/src/bin/pgaccess/images/icon_checkbutton.gif
new file mode 100644
index 00000000000..ddfe64ca8b4
Binary files /dev/null and b/src/bin/pgaccess/images/icon_checkbutton.gif differ
diff --git a/src/bin/pgaccess/images/icon_entry.gif b/src/bin/pgaccess/images/icon_entry.gif
new file mode 100644
index 00000000000..750d1ff5e43
Binary files /dev/null and b/src/bin/pgaccess/images/icon_entry.gif differ
diff --git a/src/bin/pgaccess/images/icon_frame.gif b/src/bin/pgaccess/images/icon_frame.gif
new file mode 100644
index 00000000000..8541cbeab8d
Binary files /dev/null and b/src/bin/pgaccess/images/icon_frame.gif differ
diff --git a/src/bin/pgaccess/images/icon_label.gif b/src/bin/pgaccess/images/icon_label.gif
new file mode 100644
index 00000000000..d60681690ce
Binary files /dev/null and b/src/bin/pgaccess/images/icon_label.gif differ
diff --git a/src/bin/pgaccess/images/icon_listbox.gif b/src/bin/pgaccess/images/icon_listbox.gif
new file mode 100644
index 00000000000..c485e9be406
Binary files /dev/null and b/src/bin/pgaccess/images/icon_listbox.gif differ
diff --git a/src/bin/pgaccess/images/icon_query.gif b/src/bin/pgaccess/images/icon_query.gif
new file mode 100644
index 00000000000..ced0ef26a54
Binary files /dev/null and b/src/bin/pgaccess/images/icon_query.gif differ
diff --git a/src/bin/pgaccess/images/icon_radiobutton.gif b/src/bin/pgaccess/images/icon_radiobutton.gif
new file mode 100644
index 00000000000..9803df6729c
Binary files /dev/null and b/src/bin/pgaccess/images/icon_radiobutton.gif differ
diff --git a/src/bin/pgaccess/images/icon_text.gif b/src/bin/pgaccess/images/icon_text.gif
new file mode 100644
index 00000000000..49d193c2796
Binary files /dev/null and b/src/bin/pgaccess/images/icon_text.gif differ
diff --git a/src/bin/pgaccess/lib/languages/francais b/src/bin/pgaccess/lib/languages/francais
new file mode 100644
index 00000000000..62dc80bb42c
--- /dev/null
+++ b/src/bin/pgaccess/lib/languages/francais
@@ -0,0 +1,525 @@
+array set Messages {
+
+"Label" "Etiquette"
+
+"Save schema" "Sauver schémas"
+
+"Is unique ?" "Est unique ?"
+
+"Report builder" "Constructeur d'états"
+
+"Criteria" "Critčre"
+
+"FATAL ERROR upgrading PgAccess table" "ERREUR FATALE en actualisant la table PgAccess"
+
+"Save this query as a view" "Sauver cette requęte comme vue ?"
+
+"Page header" "En-tęte de page"
+
+"Query name" "Nom de requęte"
+
+"Please select an object first!" "Selectionnez un objet d'abord"
+
+"Fields :" "Le champs de index"
+
+"Name" "Nom"
+
+"File name" "Nom du fichier"
+
+"Detail record" "Detail d'enregistrement"
+
+"Auto-load the last opened database at startup" "Chargement automatique de la base au démarrage"
+
+"Maxvalue" "Valeur maximale"
+
+"Start value" "Valeur de début"
+
+"Report fields" "Champs de l'état"
+
+"Test form" "Tester formulaire"
+
+"Error trying to connect to database '%s' on host %s \n\nPostgreSQL error message:%s" "Erreur de liaison ŕ la base de données '%s' pour machine %s \n\nMessage d'erreur PostgreSQL :%s"
+
+"No field type ?" "Type champ inexistant ?"
+
+"User without name?" "Cette utilisateur a-t-il un nom?"
+
+"You have to supply a name for this schema!" "Vous devez fournir un nom pour ce schéma !"
+
+"Last value" "Derničre valeur"
+
+"Preferences" "Préférences"
+
+"View '%s' already exists!\nOverwrite ?" "La vue '%s' existe déjŕ!\n Ecraser ?"
+
+"You have to select an index!" "Vous devez selectionner un index!"
+
+"Field type" "Type de champ"
+
+"Script name" "Nom du script"
+
+"Reload" "Valider"
+
+"Remove table %s from query?" "Eliminer table %s de la requęte ?"
+
+"SQL window" "Fenętre SQL"
+
+"Allow user to create other users" "Peut créer d'autres utilisateurs"
+
+"Delete current record ?" "Détruire enregistrement courant ?"
+
+"List box" "Liste"
+
+"Save to query builder" "Sauver le constructeur de requętes"
+
+"fixed width" "largeur de police fixe"
+
+"Scripts" "Scripts"
+
+"Yes" "Oui"
+
+"Add label" "Ajouter étiquette"
+
+"Sequence created!" "Le séquence avait été créée"
+
+"Field information" "Information de champ"
+
+"Design" "Editer"
+
+"Field" "Champ"
+
+"You have to supply an external file name!" "Vous devez fournir un nom du fichier"
+
+"Increment" "Incrément"
+
+"No" "Non"
+
+"Form design" "Création du formulaire"
+
+"You must supply a return type!" "Vous devez fournir un type de retour"
+
+"Remove field from result ?" "Eliminer champ du résultat ?"
+
+"There is another object (a %s) with the same name.\nPlease change it!" "Il y a un autre objet (%s) avec le męme nom.\nChangez le SVP!"
+
+"This query has no commands?" "Cette requęte n'a pas de définition?"
+
+"Execute query" "Execute requęte"
+
+"field cannot be null" "champ ne peut ętre vide"
+
+"Help" "Aide"
+
+"Rename column" "Renomme champ"
+
+"Database" "Base de données"
+
+"Information" "Information"
+
+"Close" "Fermer"
+
+"Command" "Commande"
+
+"Table" "Table"
+
+"verify password" "encore un fois"
+
+"Vacuum" "Vider"
+
+"Default value" "Valeur par defaut"
+
+"Import" "Importer"
+
+"Delete index" "Détruire index"
+
+"Move up" "Monter"
+
+"index properties" "Propriétés d'index"
+
+"check" "vérifier"
+
+"Create new table" "Création de nouvelle table"
+
+"Visual query designer" "Créateur visuel de requętes"
+
+"Delete all" "Détruire tous"
+
+"You are going to delete\n\n %s \n\nProceed?" "Vous allez détruire\n\n %s \n\nD'accord?"
+
+"Schema name" "Nom de schéma"
+
+"Error executing query" "Erreur en exécutant la requęte"
+
+"Report name" "Nom de l'état"
+
+"Add field" "Ajout champ"
+
+"Field name" "Nom de champ"
+
+"FATAL ERROR searching for PgAccess system tables" "ERREUR FATALE en cherchant le systčme de tables PgAccess"
+
+"A big number of rows displayed in table view will take a lot of memory!" "L'affichage d'un grand nombre de colonnes prend beaucoup de mémoire"
+
+"Preview" "Pré-visualisation"
+
+"Users" "Utilisateurs"
+
+"Owner" "Auteur"
+
+"Form's window internal name" "Le nom interne de la fenętre de formulaire"
+
+"Sort field" "Trier champs"
+
+"New name is the same as the old one!" "Le nouveau nom est le męme que l'ancien"
+
+"Warning" "Avertissement"
+
+"Suggestions at" "Suggestions ŕ"
+
+"Functions" "Fonctions"
+
+"Schema" "Schéma"
+
+"Open" "Ouvrir"
+
+"size" "taille"
+
+"Delete" "Détruire"
+
+"Returns" "Retours"
+
+"Define new user" "Définir nouvel utilisateur"
+
+"Move down" "Descendre"
+
+"Design script" "Script de création"
+
+"Check box" "Case ŕ cocher"
+
+"FINAL WARNING" "DERNIER AVERTISSEMENT"
+
+"Add table" "Ajouter table"
+
+"Table viewer font" "Police de visualisateur de tables"
+
+"The field type is not specified!" "Le type de champ n'est pas spécifié"
+
+"Close test form" "Fermer test du formulaire"
+
+"Export table" "Exporter"
+
+"Add new index" "Ajout nouvel index"
+
+"Left" "Gauche"
+
+"Field delimiter" "Séparateur de champs"
+
+"Add formula" "Ajouter formule"
+
+"Open database" "Ouvre la base de données"
+
+"Return" "Retour"
+
+"Changed fonts may appear in the next working session!" "Les nouvelles polices apparaîtront ŕ la prochaine session"
+
+"Error" "Erreur"
+
+"Enter a field name" "Entrez un nom de champ !"
+
+"field name" "Nom de champ"
+
+"Forms" "Formulaires"
+
+"Cannot add column" "Ne peut ajouter de colonne"
+
+"Clean" "Nettoyer"
+
+"Delete all objects ?" "Détruire tous les objets"
+
+"Preferred language" "Langage préféré"
+
+"Execute SQL" "Exécute SQL"
+
+"Sequences" "Séquences"
+
+"Button" "Bouton"
+
+"Language" "Langage"
+
+"Query '%s' was not found!" "La requęte '%s' n'a pas été trouvée"
+
+"Object" "Objet"
+
+"Font fixed" "Police fixe"
+
+"Table name" "Nom de table"
+
+"Export" "Export"
+
+"Change user" "Changer utilisateur"
+
+"You must give object a new name!" "Vous devez donner un nouveau nom"
+
+"Query" "Requęte"
+
+"User name" "Nom d'utilisateur"
+
+"Font normal" "Police normale"
+
+"Import table" "Importer"
+
+"Toolbar" "Outils"
+
+"Radio btn" "Radio"
+
+"You must supply a name for this function!" "Vous devez fournir un nom pour la fonction"
+
+"You have to select index fields!" "Vous devez selectionner le champ pour l'index"
+
+"Constraint" "Contrainte"
+
+"The script must have a name" "Le script doit avoir un nom"
+
+"Save" "Sauver"
+
+"Exit" "Quitter"
+
+"Inherits" "Source"
+
+"Delete field" "Détruire"
+
+"About" "A propos"
+
+"Empty field name ?" "Nom de champ inexistant ?"
+
+"All report information will be deleted.\n\nProceed ?" "Toutes les informations de l'état vont ętre détruites\n\nContinuer ?"
+
+"Host" "Machine"
+
+"vacuuming database %s ..." "Vider base %s ..."
+
+"Indexes defined" "Index définis"
+
+"You must specify field size!" "La taille du champ doit ętre précisée"
+
+"Schema '%s' already exists!" "Le schéma '%s' existe déjŕ!"
+
+"There is another field with the same name: '%s'!\n\nReplace it ?" "Il y a un autre champ avec le męme nom : '%s'!\n\nRemplacer?"
+
+"Contents" "Contient"
+
+"Views" "Vues"
+
+"Variable" "Variable"
+
+"Error executing query\n\n%s\n\nPostgreSQL error message:\n%s\nPostgreSQL status:%s" "Erreur en exécutant la requęte\n\n%s\n\nMessage d'erreur PostgreSQL :\n%s \n Statut de PostgreSQL:%s"
+
+"Filter conditions" "Conditions de filtre"
+
+"Error retrieving query definition" "Erreur en retrouvant la définition de la requęte"
+
+"Error deleting view" "Erreur en détruisant la vue"
+
+"New" "Nouveau"
+
+"Tables" "Tables"
+
+"Create" "Créer"
+
+"Forms need an internal name, only literals, low case" "Les formulaires ont besoin d'un nom interne, seulement en lettres minuscules"
+
+"Do you want to save the form into the database?" "Voulez vous sauver le formulaire dans la base?"
+
+"Schema '%s' was not found!" "Le schéma '%s' n'a pas été trouvé"
+
+"proportional" "Proportionnelle"
+
+"Function saved!" "Le fonction avait ete créée"
+
+"with OIDs" "avec des OIDs"
+
+"Table information" "Information de table"
+
+"Error inserting new record" "Erreur en introduisant le nouvel enregistrement"
+
+"Column name '%s' already exists in this table!" "Le nom de colonne existe déjŕ dans cette table !"
+
+"File" "Fichier"
+
+"Your table has no fields!" "Cette table n'a pas de champ?"
+
+"Height" "Hauteur"
+
+"You will always get the latest version at:" "Le derniere version toujours ŕ"
+
+"Form must have a name" "Le formulaire doit avoir un nom !"
+
+"Password" "Mot de passe"
+
+"Valid until (date)" "Valable jusqu'ŕ"
+
+"Report source" "Source de l'état"
+
+"Allow user to create databases" "Peut créer une base"
+
+"Cancel" "Abandon"
+
+"Is clustered ?" "Est groupé ?"
+
+"Add new column" "Ajout nouveau champ"
+
+"Show SQL" "Montrez le code SQL."
+
+"New name" "Nouveau nom"
+
+"Table '%s' not found!" "Le table '%s' n'est pas trouvée"
+
+"Form name" "Nom du formulaire"
+
+"Visual designer" "Créateur visuel"
+
+"You choose to delete index\n\n %s \n\nProceed?" "Vous allez détruire index\n\n %s \n\nConfirmation?"
+
+"Error retrieving from" "Erreur en retrouvant..."
+
+"Save query definition" "Sauver la définition de la requęte"
+
+"A Tcl/Tk interface to\nPostgreSQL\nby Constantin Teodorescu" "Une Tcl/Tk interface pour\nPostgreSQL\npar Constantin Teodorescu"
+
+"Operation completed!" "Opération finie"
+
+"Max rows displayed in table/query view" "Nombre maximal de colonnes affichées dans la table/vue de requęte"
+
+"Passwords do not match!" "Les mots de passe ne vont pas"
+
+"Rename" "Renommer"
+
+"Entry" "Entrée"
+
+"Error retrieving schema definition" "Erreur en retrouvant la définition du schéma"
+
+"This is an action query!\n\nExecute it?" "Ceci est une requęte d'action !\nExécuter ?"
+
+"Error retrieving view definition for" "Erreur en lisant la définition pour la vue"
+
+"options" "options"
+
+"Sequence '%s' not found!" "Le séquence '%s' n'a pas été trouvée"
+
+"Text" "Texte"
+
+"Tcl error executing pg_exec %s\n\n%s" "Erreur Tcl en exécutant %s\n\n%s"
+
+"Width" "Largeur"
+
+"You have to supply a name for this query!" "Vous devez donner un nom ŕ cette requęte"
+
+"Accessing data. Please wait ..." "Lit les données. Patience ..."
+
+"Report footer" "Pied de rapport"
+
+"Parameters" "Paramčtres"
+
+"Queries" "Requętes"
+
+"Query '%s' already exists!" "La requęte '%s' existe dejŕ!"
+
+"Font bold" "Police grasse"
+
+"Query builder" "Constructeur de requętes"
+
+"Error defining view" "Erreur en définissant la vue"
+
+"Top" "Haut"
+
+"You must supply a name for your table!" "Vous devez introduire un nom pour cette table"
+
+"Page footer" "Pied de page"
+
+"Font italic" "Police italique"
+
+"Field name not entered!" "Le nom de champ n'est pas entré"
+
+"Index name cannot be null!" "Le nom de l'index ne peut ętre nul"
+
+"Sort" "Trier"
+
+"Import-Export table" "Import/Export table"
+
+"Point" "Point"
+
+"type" "type"
+
+"You should supply a name for this sequence" "Vous devez donner un nom ŕ la séquence"
+
+"Remove link ?" "Détruire cette liaison?"
+
+"You have to supply a table name!" "Vous devez fournir un nom de table"
+
+"Report header" "En tęte de l'état"
+
+"Attributes" "Attributs"
+
+"Table '%s' already in schema" "Le table est déjŕ dans le schéma"
+
+"Username" "Utilisateur"
+
+"Minvalue" "Valeur minimale"
+
+"Sequence name" "Nom de séquence"
+
+"Define sequence" "Définir la séquence"
+
+"Function" "Fonction"
+
+"Sorting and filtering not (yet) available from queries!\n\nPlease enter them in the query definition!" "Tri et filtrage pas (encore) possible ŕ partir des requętes!\n\nEntrez les dans la définition de la requęte SVP"
+
+"Reports" "Etats"
+
+"Columns" "Champs"
+
+"Indexes" "Index"
+
+"Permissions" "Permissions"
+
+"not null" "non vide"
+
+"Cluster index" "index groupe"
+
+"index columns" "index champs"
+
+"Add user" "Ajoute utilisateur"
+
+"Change permissions" "Change droits"
+
+"select" "sélections"
+
+"update" "actualise"
+
+"insert" "introduire"
+
+"rule" "rčgles"
+
+"Identification" "Identification"
+
+"Owner ID" "ID du propriétaire"
+
+"Has primary key ?" "A une clé primaire ?"
+
+"Has rules ?" "A des rčgles?"
+
+"Statistics" "Statistiques"
+
+"Number of tuples" "Nombre des enregistrements"
+
+"Number of pages" "Nombres des pages"
+
+"Index name" "Nom d'index"
+
+"Index fields" "Champs d'index"
+
+"Table OID" "OID de table"
+
+}
+
+
diff --git a/src/bin/pgaccess/lib/languages/italiano b/src/bin/pgaccess/lib/languages/italiano
new file mode 100644
index 00000000000..157dd4feb61
--- /dev/null
+++ b/src/bin/pgaccess/lib/languages/italiano
@@ -0,0 +1,539 @@
+array set Messages {
+
+"Label" "Etichetta"
+
+"Save schema" "Salva lo schema"
+
+"Is unique ?" "E' unico ?"
+
+"Report builder" "Report builder"
+
+"Criteria" "Criterio"
+
+"FATAL ERROR upgrading PgAccess table" "ERRORE FATALE aggiornando le tabelle PgAccess"
+
+"Save this query as a view" "Salva questa query come View"
+
+"Page header" "Testata di pagina"
+
+"Query name" "Nome query"
+
+"Please select an object first!" "Seleziona prima un'oggetto!"
+
+"Fields :" "Campi :"
+
+"Name" "Nome"
+
+"File name" "Nome del file"
+
+"Detail record" "Dettaglio del record"
+
+"Auto-load the last opened database at startup" "Apertura automatica ultimo database all'avvio"
+
+"Maxvalue" "Valore massimo"
+
+"Start value" "Valore d'inizio"
+
+"Report fields" "Campi disponibili"
+
+"Test form" "Test form"
+
+"Error trying to connect to database '%s' on host %s \n\nPostgreSQL error message:%s" "Errore di connessione al database '%s' sull'host %s \n\nMessaggio d'errore di PostgreSQL :%s"
+
+"No field type ?" "Nessun tipo per il campo?"
+
+"User without name?" "Utente senza nome ?"
+
+"You have to supply a name for this schema!" "Devi specificare un nome per lo schema!"
+
+"Last value" "Ultimo valore"
+
+"Preferences" "Preferenze"
+
+"View '%s' already exists!\nOverwrite ?" "View '%s' esiste gia'!\nSovrascrivo ?"
+
+"You have to select an index!" "Devi scegliere un'indice!"
+
+"Field type" "Tipo campo"
+
+"Script name" "Nome dello Script"
+
+"Reload" "Ricarica"
+
+"Remove table %s from query?" "Rimuovere la tabella %s dalla query?"
+
+"SQL window" "Finestra SQL"
+
+"Allow user to create other users" "L'utente puo' creare altri utenti"
+
+"Delete current record ?" "Cancello il record corrente? "
+
+"List box" "Lista"
+
+"Save to query builder" "Salva nel query builder"
+
+"fixed width" "larghezza fissa"
+
+"Scripts" "Scripts"
+
+"Yes" "Si"
+
+"Add label" "Aggiungi etichetta"
+
+"Sequence created!" "Sequenza creata !"
+
+"Field information" "Informazioni sul campo"
+
+"Design" "Disegna"
+
+"Field" "Campo"
+
+"You have to supply an external file name!" "Devi specificare un nome file esterno!"
+
+"Increment" "Incremento"
+
+"No" "No"
+
+"Form design" "Disegna il Form"
+
+"You must supply a return type!" "Devi specificare il tipo di dato ritornato"
+
+"Remove field from result ?" "Eliminare il campo dal risultato ?"
+
+"There is another object (a %s) with the same name.\nPlease change it!" "Esiste un'altro oggetto (un %s) con lo stesso nome.\nCambia nome!"
+
+"This query has no commands?" "Questa query non ha comandi ?"
+
+"Execute query" "Esegui query"
+
+"field cannot be null" "Il campo non puo' essere nullo"
+
+"Help" "Aiuto"
+
+"Rename column" "Rinomina campo"
+
+"Database" "Database"
+
+"Information" "Informazioni"
+
+"Close" "Chiudi"
+
+"Command" "Comando"
+
+"Table" "Tabella"
+
+"verify password" "verifica password"
+
+"Vacuum" "Vacuum"
+
+"Default value" "Valore predefinito"
+
+"Import" "Importa"
+
+"Delete index" "Cancella indice"
+
+"Move up" "Muovi su'"
+
+"index properties" "proprieta' dell'indice"
+
+"check" "Controlla"
+
+"Create new table" "Crea una nuova tabella"
+
+"Visual query designer" "Visual query designer"
+
+"Delete all" "Cancella tutto"
+
+"You are going to delete\n\n %s \n\nProceed?" "Stai per cancellare\n\n %s\n\n Procedo?"
+
+"Schema name" "Nome dello schema"
+
+"Error executing query" "Errore eseguendo la query"
+
+"Report name" "Nome del report"
+
+"Add field" "Aggiungi campo"
+
+"Field name" "Nome campo"
+
+"FATAL ERROR searching for PgAccess system tables" "ERRORE FATALE cercando le tabelle PgAccess di sistema"
+
+"A big number of rows displayed in table view will take a lot of memory!" "Un numero grande di righe visualizzate richiedera' molta memoria!"
+
+"Preview" "Anteprima"
+
+"Users" "Utenti"
+
+"Owner" "Proprietario"
+
+"Form's window internal name" "Il nome interno del form"
+
+"Sort field" "Campo ordinato"
+
+"New name is the same as the old one!" "Nuovo nome uguale al precedente!"
+
+"Warning" "Attenzione"
+
+"Suggestions at" "Suggerimenti a"
+
+"Functions" "Funzioni"
+
+"Schema" "Schema"
+
+"Open" "Apri"
+
+"size" "Dimensione"
+
+"Delete" "Cancella"
+
+"Returns" "Risultati"
+
+"Define new user" "Definisce nuovo utente"
+
+"Move down" "Muovi Giů"
+
+"Design script" "Design script"
+
+"Check box" "Casella si/no"
+
+"FINAL WARNING" "Ultimo Warning"
+
+"Add table" "Nuova tabella"
+
+"Table viewer font" "Carattere del visualizzatore tabelle"
+
+"The field type is not specified!" "Il tipo del campo non e' stato specificato!"
+
+"Close test form" "Chiudi test form"
+
+"Export table" "Esporta tabelle"
+
+"Add new index" "Aggiungi nuovo indice"
+
+"Left" "Sinistra"
+
+"Field delimiter" "Delimitatore di campo"
+
+"Add formula" "Aggiungi formula"
+
+"Open database" "Apri il Database"
+
+"Return" "Risultato"
+
+"Changed fonts may appear in the next working session!" "I caratteri cambiati saranno visibili nella prossima sessione!"
+
+"Error" "Errore"
+
+"Enter a field name" "Inserisci un nome campo"
+
+"field name" "Nome Campo"
+
+"Forms" "Forms"
+
+"Cannot add column" "Non posso aggiungere una colonna"
+
+"Clean" "Pulisci"
+
+"Delete all objects ?" "Cancellare tutti gli oggetti ?"
+
+"Preferred language" "Lingua preferita"
+
+"Execute SQL" "Esegui SQL"
+
+"Sequences" "Sequences"
+
+"Button" "Bottone"
+
+"Language" "Lingua"
+
+"Query '%s' was not found!" "La query '%s' non e' stata trovata!"
+
+"Object" "Oggetto"
+
+"Font fixed" "Carattere fisso"
+
+"Table name" "Nome tabella"
+
+"Export" "Esporta"
+
+"Change user" "Cambia utente"
+
+"You must give object a new name!" "Devi dare un nuovo nome all'oggetto!"
+
+"Query" "Query"
+
+"User name" "Nome utente"
+
+"Font normal" "Carattere normale"
+
+"Import table" "Importa"
+
+"Toolbar" "Barra degli strumenti"
+
+"Radio btn" "Bottone a scelta"
+
+"You must supply a name for this function!" "Devi fornire un nome per questa funzione!"
+
+"You have to select index fields!" "Devi selezionare i campi dell'indice"
+
+"Constraint" "Constraint"
+
+"The script must have a name" "Lo script deve avere un nome"
+
+"Save" "Salva"
+
+"Exit" "Esci"
+
+"Inherits" "Eredita"
+
+"Delete field" "Cancella campo"
+
+"About" "Apropos"
+
+"Empty field name ?" "Nome del campo vuoto?"
+
+"All report information will be deleted.\n\nProceed ?" "Tutte le informazioni relative al report saranno cancellate.\n\n Procedo ?"
+
+"Host" "Host"
+
+"vacuuming database %s ..." "vacuuming database %s ..."
+
+"Indexes defined" "Indici definiti"
+
+"Owner ID" "Proprietario ID"
+
+"You must specify field size!" "Devi specificare la dimensione del campo!"
+
+"Schema '%s' already exists!" "Lo schema '%s' esiste gia'!"
+
+"There is another field with the same name: '%s'!\n\nReplace it ?" "C'e' un'altro campo con lo stesso nome: '%s'!\n\nSostituisco ? "
+
+"Contents" "Contenuto"
+
+"Views" "Views"
+
+"Variable" "Variabile"
+
+"Error executing query\n\n%s\n\nPostgreSQL error message:\n%s\nPostgreSQL status:%s" "Errore eseguendo la query\n\n%s\n\nErrore PostgreSQL:\n%s\nPostgreSQL status:%s"
+
+"Filter conditions" "Condizioni di filtro"
+
+"Error retrieving query definition" "Errore caricando la definizione della query"
+
+"Error deleting view" "Errore durante la cancellazione"
+
+"New" "Nuovo"
+
+"Tables" "Tabelle"
+
+"Create" "Crea"
+
+"Forms need an internal name, only literals, low case" "Il form ha bisogno di un nome interno, solo lettere minuscole"
+
+"Do you want to save the form into the database?" "Vuoi salvare il form nel database ?"
+
+"Schema '%s' was not found!" "Lo schema '%s' non e' stato trovato!"
+
+"proportional" "proporzionale"
+
+"Function saved!" "Funzione salvata!"
+
+"with OIDs" "con OIDs"
+
+"Table information" "Informazioni tabella"
+
+"Error inserting new record" "Errore inserendo il nuovo record"
+
+"Column name '%s' already exists in this table!" "Il campo '%s' esiste gia'!"
+
+"File" "File"
+
+"Your table has no fields!" "La tabella non ha campi !"
+
+"Height" "Altezza"
+
+"You will always get the latest version at:" "Troverai l'ultima versione su:"
+
+"Form must have a name" "Il form deve avere un nome"
+
+"Password" "Password"
+
+"Valid until (date)" "Valido fino a"
+
+"Report source" "Sorgente del report"
+
+"Allow user to create databases" "L'utente puo' creare database"
+
+"Cancel" "Abbandona"
+
+"Is clustered ?" "Is clustered ?"
+
+"Add new column" "Aggiungi nuovo campo"
+
+"Show SQL" "Mostra SQL"
+
+"New name" "Nuovo nome"
+
+"Table '%s' not found!" "Tabella '%s' non trovata!"
+
+"Form name" "Nome form"
+
+"Visual designer" "Visual Designer"
+
+"You choose to delete index\n\n %s \n\nProceed?" "Hai scelto di cancellare l'indice\n\n %s \n\nProcedo?"
+
+"Error retrieving from" "Errore caricando da"
+
+"Save query definition" "Salva la definizione della query"
+
+"A Tcl/Tk interface to\nPostgreSQL\nby Constantin Teodorescu" "Una interfaccia Tcl/Tk verso\nPostgreSQL\n di Constantin Teodorescu"
+
+"Operation completed!" "Operazione completata!"
+
+"Max rows displayed in table/query view" "Numero massimo di righe nella visualiz. tabella/query"
+
+"Passwords do not match!" "La password non corrisponde!"
+
+"Rename" "Rinomina"
+
+"Entry" "Entry"
+
+"Error retrieving schema definition" "Errore caricando la definizione dello schema"
+
+"This is an action query!\n\nExecute it?" "Questa e' una query d'azione\n\nLa eseguo?"
+
+"Error retrieving view definition for" "Errore caricando la definizione di"
+
+"options" "opzioni"
+
+"Sequence '%s' not found!" "Sequence '%s' non trovata!"
+
+"Text" "Testo"
+
+"Tcl error executing pg_exec %s\n\n%s" "Errore Tcl eseguendo pg_exec %s\n\n%s"
+
+"Width" "Larghezza"
+
+"You have to supply a name for this query!" "Devi specificare un nomer per la query"
+
+"Accessing data. Please wait ..." "Carico i dati, attendi..."
+
+"Report footer" "Piede del report"
+
+"Parameters" "Parametri"
+
+"Queries" "Queries"
+
+"Query '%s' already exists!" "La query '%s' esiste gia'!"
+
+"Font bold" "Carattere grassetto"
+
+"Query builder" "Query builder"
+
+"Error defining view" "Errore definendo la query"
+
+"Top" "Sopra"
+
+"You must supply a name for your table!" "Devi specificare un nome per la tabella!"
+
+"Page footer" "Pie' di pagina"
+
+"Font italic" "Carattere corsivo"
+
+"Field name not entered!" "Nome del campo non inserito!"
+
+"Index name cannot be null!" "Il nome dell'indice non puo' essere nullo!"
+
+"Sort" "Ordina"
+
+"Import-Export table" "Importa/Esporta tabella"
+
+"Point" "Punto"
+
+"type" "tipo"
+
+"You should supply a name for this sequence" "Tu devi fornire un nome per la sequenza"
+
+"Remove link ?" "Rimuovere collegamento ?"
+
+"You have to supply a table name!" "Devi specificare il nome tabella!"
+
+"Report header" "Testata del report"
+
+"Attributes" "Attributi"
+
+"Table '%s' already in schema" "Tabella '%s' esiste gia' nello schema!"
+
+"Username" "Nome utente"
+
+"Minvalue" "Valore minimo"
+
+"Sequence name" "Nome del sequence"
+
+"Define sequence" "Definisci la sequenza"
+
+"Function" "Funzione"
+
+"Sorting and filtering not (yet) available from queries!\n\nPlease enter them in the query definition!" "Ordinamento e filtri non ancora disponibili dalle query!\n\nInseriscili nella definizione della query!"
+
+"Reports" "Reports"
+
+"primary key" "chiave primaria"
+
+"Visual schema designer" "Ambiente sviluppo relazioni visuale"
+
+Print Stampa
+
+"Print to Postscript" "Stampa Postscript"
+
+Commands Azioni
+
+"Report preview" "Anteprima report"
+
+"The printed image in Postscript is in the file pgaccess-report.ps" "La stampa in Poscript č nel file pgaccess-report.ps"
+
+"Columns" "Campi"
+
+"Indexes" "Indici"
+
+"Permissions" "Autorita"
+
+"not null" "non nullo"
+
+"Cluster index" "Cluster indice"
+
+"index columns" "campi dello indice"
+
+"Add user" "Nuovo utente"
+
+"Change permissions" "Cambiare autorita"
+
+"select" "selezioni"
+
+"update" "update"
+
+"insert" "inserisci"
+
+"rule" "regoli"
+
+"Identification" "Identificatione"
+
+"Owner ID" "ID dello proprieta"
+
+"Has primary key ?" "Chiave primaria ?"
+
+"Has rules ?" "Regoli definiti ?"
+
+"Statistics" "Statistica"
+
+"Number of tuples" "Numero righe"
+
+"Number of pages" "Numero pagine"
+
+"Index name" "Nome indici"
+
+"Index fields" "Campi dello indice"
+
+"Table OID" "Tabella OID"
+
+}
diff --git a/src/bin/pgaccess/lib/languages/magyar b/src/bin/pgaccess/lib/languages/magyar
new file mode 100644
index 00000000000..3293632e616
--- /dev/null
+++ b/src/bin/pgaccess/lib/languages/magyar
@@ -0,0 +1,525 @@
+array set Messages {
+
+"Label" "Cimke"
+
+"Save schema" "Séma mentése"
+
+"Is unique ?" "Egyedi (UNIQUE) ?"
+
+"Report builder" "Jelentés szerkesztő"
+
+"Criteria" "Feltételek"
+
+"FATAL ERROR upgrading PgAccess table" "FATÁLIS HIBA keletkezett a PgAccess tábla frissitése közben"
+
+"Save this query as a view" "Nézetként (VIEW) akarod elmenteni a lekérdezést?"
+
+"Page header" "Oldal fejléc"
+
+"Query name" "Lekérdezés név"
+
+"Please select an object first!" "Először válassz egy objektumot!"
+
+"Fields :" "Mezők :"
+
+"Name" "Név"
+
+"File name" "Fájl név"
+
+"Detail record" "Részletes bejegyzés"
+
+"Auto-load the last opened database at startup" "Az utolsóként használt adatbázis automatikus nyitésa inditáskor"
+
+"Maxvalue" "Maximális érték"
+
+"Start value" "Kezdőérték"
+
+"Report fields" "Jelentés mezők"
+
+"Test form" "Teszt kérdőiv (FORM)"
+
+"Error trying to connect to database '%s' on host %s \n\nPostgreSQL error message:%s" "Hiba a(z) '%s' nevű adatbázishoz kapcsolódás közben a(z) '%s' szerveren.\n\nPostgreSQL hibaüzenet:%s"
+
+"No field type ?" "Nincs a mezőnek tipusa ?"
+
+"User without name?" "Felhasználó név nélkül ?"
+
+"You have to supply a name for this schema!" "Nevet kell adj ennek a sémának !"
+
+"Last value" "Legutóbbi érték"
+
+"Preferences" "Beállitások"
+
+"View '%s' already exists!\nOverwrite ?" "A(z) '%s' nevű nézet (VIEW) már létezik!\n Felülirás ?"
+
+"You have to select an index!" "Választanod kell egy indexet!"
+
+"Field type" "Mezőtipus"
+
+"Script name" "Szkript neve"
+
+"Reload" "Újratölt"
+
+"Remove table %s from query?" "Törölni akarod a(z) '%s' táblát ebből a lekérdezésből ?"
+
+"SQL window" "SQL ablak"
+
+"Allow user to create other users" "Engedély a felhasználónak új felhasználó készitésére"
+
+"Delete current record ?" "Az aktuális bejegyzés törlése ?"
+
+"List box" "Lista"
+
+"Save to query builder" "Mentsd a lekérdezés szerkesztőbe"
+
+"fixed width" "fix szélesség"
+
+"Scripts" "Szkriptek"
+
+"Yes" "Igen"
+
+"Add label" "Adj hozzá cimkét"
+
+"Sequence created!" "A szekvencia (SEQUENCE) elkészült!"
+
+"Field information" "Mező információ"
+
+"Design" "Tervezés"
+
+"Field" "Mező"
+
+"You have to supply an external file name!" "Meg kell adj egy külső fájlnevet!"
+
+"Increment" "Növelés"
+
+"No" "Nem"
+
+"Form design" "Kérdőiv (FORM) tervezés"
+
+"You must supply a return type!" "Szükség van visszatérési értékre!"
+
+"Remove field from result ?" "A mezö törlése az eredményből ?"
+
+"There is another object (a %s) with the same name.\nPlease change it!" "Van már ilyen nevű (%s) objektum!\nLégyszives változtasd meg!"
+
+"This query has no commands?" "Ebben a lekérdezésben nincs parancs?"
+
+"Execute query" "Lekérdezés futtatása"
+
+"field cannot be null" "a mező nem lehet NULL"
+
+"Help" "Súgó"
+
+"Rename column" "Az oszlop átnevezése"
+
+"Database" "Adatbázis"
+
+"Information" "Információ"
+
+"Close" "Zárás"
+
+"Command" "Utasitás"
+
+"Table" "Tábla"
+
+"verify password" "jelszó ellenőrzés"
+
+"Vacuum" "Porszivózás (VACUUM)"
+
+"Default value" "Alapérték"
+
+"Import" "Behozatal"
+
+"Delete index" "Index törlés"
+
+"Move up" "Mozgasd fel"
+
+"index properties" "index tulajdonságok"
+
+"check" "ellenőrzi"
+
+"Create new table" "Új tábla készités"
+
+"Visual query designer" "Lekérdezés tervező"
+
+"Delete all" "Törölni mindet"
+
+"You are going to delete\n\n %s \n\nProceed?" "Le fogod törölni az alábbit:\n\n %s \n\nFolytatod?"
+
+"Schema name" "Séma neve"
+
+"Error executing query" "Hiba a lekérdezés futtatása közben"
+
+"Report name" "Jelentés neve"
+
+"Add field" "Mező hozzáadás"
+
+"Field name" "Mezőnév"
+
+"FATAL ERROR searching for PgAccess system tables" "FATÁLIS HIBA a PgAccess rendszertáblák keresésénél"
+
+"A big number of rows displayed in table view will take a lot of memory!" "A nézetnél (VIEW) kijelzendő sorok nagy száma miatt sok memória fog lefoglalódni !"
+
+"Preview" "Előzetes nézet"
+
+"Users" "Felhasználók"
+
+"Owner" "Tulajdonos"
+
+"Form's window internal name" "Kérdőiv (FORM) ablakának belső használatú neve"
+
+"Sort field" "Mező rendezése"
+
+"New name is the same as the old one!" "Az új név megegyezik a régivel!"
+
+"Warning" "Figyelem"
+
+"Suggestions at" "Javaslatok itt:"
+
+"Functions" "Függvények"
+
+"Schema" "Séma"
+
+"Open" "Nyit"
+
+"size" "méret"
+
+"Delete" "Törlés"
+
+"Returns" "Visszatér"
+
+"Define new user" "Új felhasználó definiálása"
+
+"Move down" "Mozgasd le"
+
+"Design script" "Szkript tervezés"
+
+"Check box" "Check box"
+
+"FINAL WARNING" "UTOLSÓ FIGYELMEZTETÉS"
+
+"Add table" "Tábla hozzáadás"
+
+"Table viewer font" "Tábla néző betűkészlet"
+
+"The field type is not specified!" "A mező tipusa nincs megadva!"
+
+"Close test form" "Zárd le a teszt kérdőivet (FORM)"
+
+"Export table" "Tábla kivitel"
+
+"Add new index" "Űj index hozzáadás"
+
+"Left" "Bal"
+
+"Field delimiter" "Mező határoló"
+
+"Add formula" "Formula hozzáadás"
+
+"Open database" "Adatbázis megnyitás"
+
+"Return" "Visszatérés"
+
+"Changed fonts may appear in the next working session!" "A megváltoztatott betűkészlet a következő futtatásnál lesz látható!"
+
+"Error" "Hiba"
+
+"Enter a field name" "Adj meg egy mezőnevet !"
+
+"field name" "Mezőnév"
+
+"Forms" "Kérdőivek"
+
+"Cannot add column" "Nem lehet oszlopot hozzáadni"
+
+"Clean" "Törlés"
+
+"Delete all objects ?" "Minden objektum törlése ?"
+
+"Preferred language" "Választott nyelv"
+
+"Execute SQL" "SQL futtatás"
+
+"Sequences" "Szekvenciák"
+
+"Button" "Gomb"
+
+"Language" "Nyelv"
+
+"Query '%s' was not found!" "A(z) '%s' nevű lekérdezés nem található!"
+
+"Object" "Objektum"
+
+"Font fixed" "Fix betűkészlet"
+
+"Table name" "Táblanév"
+
+"Export" "Kivitel"
+
+"Change user" "Felhasználócsere"
+
+"You must give object a new name!" "Az objektumnak új nevet kell adjál!"
+
+"Query" "Lekérdezés"
+
+"User name" "Felhasználónév"
+
+"Font normal" "Normális betűkészlet"
+
+"Import table" "Tábla bevitel"
+
+"Toolbar" "Eszközpult"
+
+"Radio btn" "Rádiógomb"
+
+"You must supply a name for this function!" "Hiányzik a függvény neve!"
+
+"You have to select index fields!" "Az index mezőket kell választanod!"
+
+"Constraint" "Kényszer (CONSTRAINT)"
+
+"The script must have a name" "Hiányzik a szkript neve"
+
+"Save" "Mentés"
+
+"Exit" "Kilépés"
+
+"Inherits" "örökli"
+
+"Delete field" "Mező törlés"
+
+"About" "A programról"
+
+"Empty field name ?" "Nom de champ inexistant ?"
+
+"All report information will be deleted.\n\nProceed ?" "Toutes les informations de l'état vont ętre détruites\n\nContinuer ?"
+
+"Host" "Szerver"
+
+"vacuuming database %s ..." "A(z) %s adatbázis porszivózása ..."
+
+"Indexes defined" "Definiált indexek"
+
+"You must specify field size!" "Hiányzik a mezőméret!"
+
+"Schema '%s' already exists!" "A(z) '%s' schéma már létezik!"
+
+"There is another field with the same name: '%s'!\n\nReplace it ?" "Már van ilyen nevű mező: '%s'!\n\nFelülirás ?"
+
+"Contents" "Tartalom"
+
+"Views" "Nézetek"
+
+"Variable" "Változó"
+
+"Error executing query\n\n%s\n\nPostgreSQL error message:\n%s\nPostgreSQL status:%s" "Hiba a lekérdezés futtatása közben\n\n%s\n\nPostgreSQL hibaüzenet:\n%s\nPostgreSQL státusz:%s"
+
+"Filter conditions" "Szűrőfeltételek"
+
+"Error retrieving query definition" "Hiba a lekérdezés definiciójának betöltésénél"
+
+"Error deleting view" "Hiba a nézet (VIEW) törlésénél"
+
+"New" "Új"
+
+"Tables" "Táblák"
+
+"Create" "Elkészit"
+
+"Forms need an internal name, only literals, low case" "A kérdőiveknek (FORM) kell egy belső név, csak kisbetűkkel"
+
+"Do you want to save the form into the database?" "El akarod menteni a kérdőivet (FORM) az adatbázisba ?"
+
+"Schema '%s' was not found!" "A(z) '%s' nevű séma nem található!"
+
+"proportional" "megfelelő"
+
+"Function saved!" "A függvény elmentve!"
+
+"with OIDs" "OID-ekkel"
+
+"Table information" "Tábla információ"
+
+"Error inserting new record" "Hiba az üj bejegyzés tárolásával"
+
+"Column name '%s' already exists in this table!" "A(z) '%s' nevű oszlop már létezik ebben a táblában !"
+
+"File" "Fájl"
+
+"Your table has no fields!" "A táblában nincsenek mezők!"
+
+"Height" "Magasság"
+
+"You will always get the latest version at:" "A legfrissebb verzió megszerezhető innen:"
+
+"Form must have a name" "Hiányzik a kérdőiv (FORM) neve !"
+
+"Password" "Jelszó"
+
+"Valid until (date)" "Érvényes eddig (dátum)"
+
+"Report source" "A jelentés forrása"
+
+"Allow user to create databases" "Engedély a felhasználónak új adatbázis készitésére"
+
+"Cancel" "Mégsem"
+
+"Is clustered ?" "CLUSTER-elt ?"
+
+"Add new column" "Új oszlop hozzáadás"
+
+"Show SQL" "SQL parancsok"
+
+"New name" "Új név"
+
+"Table '%s' not found!" "A(z) '%s' nevű tábla nem található!"
+
+"Form name" "Kérdőiv (FORM) név"
+
+"Visual designer" "Tervező"
+
+"You choose to delete index\n\n %s \n\nProceed?" "Biztos, hogy akarod törölni az alábbi indexet?\n\n %s"
+
+"Error retrieving from" "Hiba a betöltésnél erről a helyről"
+
+"Save query definition" "A lekérdezés elmentése"
+
+"A Tcl/Tk interface to\nPostgreSQL\nby Constantin Teodorescu" "Egy Tcl/Tk felület a\nPostgreSQL-hez\nKészitette: Constantin Teodorescu"
+
+"Operation completed!" "Beavatkozás végrehajtva!"
+
+"Max rows displayed in table/query view" "Maximális sorok száma a tábláknál/lekérdezéseknél"
+
+"Passwords do not match!" "A jelszók nem egyeznek!"
+
+"Rename" "Átnevezés"
+
+"Entry" "Bejegyzés"
+
+"Error retrieving schema definition" "Hiba a séma-definició betöltése közben"
+
+"This is an action query!\n\nExecute it?" "Ez nem lekérdezés, hanem parancs.\nFuttatás ?"
+
+"Error retrieving view definition for" "Hiba a nézet (VIEW) betöltése közben "
+
+"options" "beállitások"
+
+"Sequence '%s' not found!" "A(z) '%s' nevű szekvencia nem található!"
+
+"Text" "Szöveg"
+
+"Tcl error executing pg_exec %s\n\n%s" "Tcl hiba a pg_exec futtatásánál %s\n\n%s"
+
+"Width" "Szélesség"
+
+"You have to supply a name for this query!" "Hiányzik a lekérdezés neve!"
+
+"Accessing data. Please wait ..." "Adatelérés. Kis türelmet ..."
+
+"Report footer" "A jelentés alja"
+
+"Parameters" "Paraméterek"
+
+"Queries" "Lekérdezések"
+
+"Query '%s' already exists!" "A(z) '%s' nevű lekérdezés már létezik!"
+
+"Font bold" "Vastag betűkészlet"
+
+"Query builder" "Lekérdezés szerkesztő"
+
+"Error defining view" "Hiba a nézet (VIEW) definiálásánál"
+
+"Top" "Csúcs"
+
+"You must supply a name for your table!" "Hiányzik a tábla neve!"
+
+"Page footer" "A lap alja"
+
+"Font italic" "Dőlt betűkészlet"
+
+"Field name not entered!" "A mezőnév hiányzik!"
+
+"Index name cannot be null!" "Az index nem lehet NULL!"
+
+"Sort" "Rendezés"
+
+"Import-Export table" "Tábla behozatal/kivitel"
+
+"Point" "Pont"
+
+"type" "tipus"
+
+"You should supply a name for this sequence" "Hiányzik a szekvencia neve!"
+
+"Remove link ?" "A kapcsolat törlése?"
+
+"You have to supply a table name!" "Hiányzik a tábla neve!"
+
+"Report header" "Jelentés fejléc"
+
+"Attributes" "Attribútumok"
+
+"Table '%s' already in schema" "A(z) '%s' tábla már szerepel a sémában!"
+
+"Username" "Felhasználó név"
+
+"Minvalue" "Minimális érték"
+
+"Sequence name" "Szekvencianév"
+
+"Define sequence" "Szekvencia definiálás"
+
+"Function" "Függvény"
+
+"Sorting and filtering not (yet) available from queries!\n\nPlease enter them in the query definition!" "A rendezés és szűrés (még) nem megoldott a lekérdezéseknél!\n\nHasználd őket a lekérdezés definiciókban!"
+
+"Reports" "Jelentések"
+
+"Columns" "Oszlopok"
+
+"Indexes" "Indexek"
+
+"Permissions" "Engedélyek"
+
+"not null" "nem NULL"
+
+"Cluster index" "Index CLUSTER-elés"
+
+"index columns" "indexelt oszlopok"
+
+"Add user" "Felhasználó hozzáadás"
+
+"Change permissions" "Engedélyek megváltoztatása"
+
+"select" "olvasás"
+
+"update" "frissités"
+
+"insert" "tárolás"
+
+"rule" "szabályok"
+
+"Identification" "Azonositás"
+
+"Owner ID" "Tulajdonos azonositó"
+
+"Has primary key ?" "Van elsődleges kulcsa ?"
+
+"Has rules ?" "Vannak szabályok ?"
+
+"Statistics" "Statisztika"
+
+"Number of tuples" "Bejegyzések száma"
+
+"Number of pages" "Oldalak száma"
+
+"Index name" "Index név"
+
+"Index fields" "Index mezők"
+
+"Table OID" "Tábla OID"
+
+}
+
+
diff --git a/src/bin/pgaccess/lib/languages/romana b/src/bin/pgaccess/lib/languages/romana
new file mode 100644
index 00000000000..d234ce3b0e7
--- /dev/null
+++ b/src/bin/pgaccess/lib/languages/romana
@@ -0,0 +1,526 @@
+array set Messages {
+
+"Label" "Etichetă"
+
+"Save schema" "Salvează planul"
+
+"Is unique ?" "Este index unic ?"
+
+"Report builder" "Proiectare rapoarte"
+
+"Criteria" "Conditie"
+
+"FATAL ERROR upgrading PgAccess table" "EROARE FATALA la actualizarea tabelei PgAccess"
+
+"Save this query as a view" "Salvează această selecţie ca o vedere"
+
+"Page header" "Cap de pagină"
+
+"Query name" "Nume selecţie"
+
+"Please select an object first!" "Selectati mai intai un obiect!"
+
+"Fields :" "Cîmpurile indexului"
+
+"Name" "Nume"
+
+"File name" "Nume fişier"
+
+"Detail record" "Înregistrări"
+
+"Auto-load the last opened database at startup" "Încarcă automat la lansare ultima bază deschisă"
+
+"Maxvalue" "Valoare maximă"
+
+"Start value" "Începe de la"
+
+"Report fields" "Câmpuri disponibile"
+
+"Test form" "Testează macheta"
+
+"Error trying to connect to database '%s' on host %s \n\nPostgreSQL error message:%s" "Eroare la conectarea la baza de date '%s' pe masina %s \n\nMesajul de eroare PostgreSQL:%s"
+
+"No field type ?" "Tip cimp necompletat!"
+
+"User without name?" "Utilizatorul asta n-ar si el un nume?"
+
+"You have to supply a name for this schema!" "Trebuie sa dati un nume acestui plan!"
+
+"Last value" "Ultima valoare"
+
+"Preferences" "Preferinţe"
+
+"View '%s' already exists!\nOverwrite ?" "Vederea '%s' mai exista!\nO suprainscriem ?"
+
+"You have to select an index!" "Trebuie sa selectati un index!"
+
+"Field type" "Tip cămp"
+
+"Script name" "Nume script"
+
+"Reload" "Reîncărcare"
+
+"Remove table %s from query?" "Eliminati tabela %s din selectie?"
+
+"SQL window" "Comenzi SQL executate"
+
+"Allow user to create other users" "Are voie să creeze alţi utilizatori"
+
+"Delete current record ?" "Stergeti inregistrarea curenta?"
+
+"List box" "Listă"
+
+"Save to query builder" "Salvează fraza SQL"
+
+"fixed width" "lăţime fixă"
+
+"Scripts" "Scripturi"
+
+"Yes" "Da"
+
+"Add label" "Adaugă etichetă"
+
+"Sequence created!" "Secventa a fost creata!"
+
+"Field information" "Informaţii despre câmpuri"
+
+"Design" "Proiectează"
+
+"Field" "Cimp"
+
+"You have to supply an external file name!" "Trebuie sa introduceti numele fisierului extern!"
+
+"Increment" "Increment"
+
+"No" "Nu"
+
+"Form design" "Proiectare machetă"
+
+"You must supply a return type!" "Trebuie sa introduceti tipul rezultatului"
+
+"Remove field from result ?" "Eliminati acest cimp din rezultat?"
+
+"There is another object (a %s) with the same name.\nPlease change it!" "Mai este un obiect (%s) cu acelasi nume!\nSchimbati-l!"
+
+"This query has no commands?" "Aceasta selectie nu are definitie?"
+
+"Execute query" "Execută selecţia"
+
+"field cannot be null" "obligatoriu de completat"
+
+"Help" "Ajutor"
+
+"Rename column" "Redenumeşte cîmp"
+
+"Database" "Baza de date"
+
+"Information" "Informaţii"
+
+"Close" "Închide"
+
+"Command" "Comandă"
+
+"Table" "Tabela"
+
+"verify password" "verifică parola"
+
+"Vacuum" "Tasează"
+
+"Default value" "Valoare implicită"
+
+"Import" "Importă"
+
+"Delete index" "Şterge index"
+
+"Move up" "Urcă"
+
+"index properties" "proprietăţi index"
+
+"check" "verifică"
+
+"Create new table" "Crează tabelă nouă"
+
+"Visual query designer" "Proiectare vizuala a selectiilor"
+
+"Delete all" "Şterge toate"
+
+"You are going to delete\n\n %s \n\nProceed?" "Urmeaza sa stergeti obiectul\n\n %s \n\nConfirmati?"
+
+"Schema name" "Numele planului"
+
+"Error executing query" "Eroare la executia selectiei"
+
+"Report name" "Nume raport"
+
+"Add field" "Adaugă-l"
+
+"Field name" "Nume câmp"
+
+"FATAL ERROR searching for PgAccess system tables" "EROARE FATALA la citirea tabelelor necesare PgAccess"
+
+"A big number of rows displayed in table view will take a lot of memory!" "Un număr mare de înregistrări încărcate va lua multă memorie"
+
+"Preview" "Încercare"
+
+"Users" "Utilizatori"
+
+"Owner" "Aparţine lui"
+
+"Form's window internal name" "Numele intern al machetei"
+
+"Sort field" "Cîmpuri sortare"
+
+"New name is the same as the old one!" "Numele nou este acelasi cu numele vechi!"
+
+"Warning" "Avertisment"
+
+"Suggestions at" "Sugestii la"
+
+"Functions" "Funcţii"
+
+"Schema" "Plan"
+
+"Open" "Deschide"
+
+"size" "mărime"
+
+"Delete" "Şterge"
+
+"Returns" "Întoarce"
+
+"Define new user" "Definire utilizator nou"
+
+"Move down" "Coboară"
+
+"Design script" "Proiectează script"
+
+"Check box" "Marcaj"
+
+"FINAL WARNING" "AVERTISMENT FINAL"
+
+"Add table" "Adaugă tabelă"
+
+"Table viewer font" "Fonturi tabele"
+
+"The field type is not specified!" "Tipul cimpului nu a fost specificat"
+
+"Close test form" "Inchide macheta test"
+
+"Export table" "Exportă tabelă"
+
+"Add new index" "Adaugă index nou"
+
+"Left" "Stânga"
+
+"Field delimiter" "Delimitator cîmp"
+
+"Add formula" "Adaugă formulă"
+
+"Open database" "Deschide baza de date"
+
+"Return" "Selectat"
+
+"Changed fonts may appear in the next working session!" "Fonturile se vor schimba la următoarea lansare"
+
+"Error" "Eroare"
+
+"Enter a field name" "Trebuie sa introduceti numele cimpului"
+
+"field name" "Nume cîmp"
+
+"Forms" "Machete"
+
+"Cannot add column" "Nu putem adauga cimpul"
+
+"Clean" "Curăţă"
+
+"Delete all objects ?" "Stergeti toate obiectele?"
+
+"Preferred language" "Limba preferată"
+
+"Execute SQL" "Execută selecţia"
+
+"Sequences" "Secvenţe"
+
+"Button" "Buton"
+
+"Language" "Limbaj"
+
+"Query '%s' was not found!" "Definitia pentru selectia '%s' nu a fost gasita"
+
+"Object" "Obiect"
+
+"Font fixed" "Font fix"
+
+"Table name" "Nume tabelă"
+
+"Export" "Exportă"
+
+"Change user" "Modificare date utilizator"
+
+"You must give object a new name!" "Trebuie sa introduceti totusi numele nou"
+
+"Query" "Query"
+
+"User name" "Nume utilizator"
+
+"Font normal" "Font normal"
+
+"Import table" "Importă tabelă"
+
+"Toolbar" "Scule"
+
+"Radio btn" "Selector"
+
+"You must supply a name for this function!" "Trebuie sa introduceti un nume pentru aceasta functie"
+
+"You have to select index fields!" "Trebuie sa selectati cimpurile indexului!"
+
+"Constraint" "Cerinţe"
+
+"The script must have a name" "Script-ul ar trebui sa aiba un nume"
+
+"Save" "Salvează"
+
+"Exit" "Terminare"
+
+"Inherits" "Strămoşi"
+
+"Delete field" "Şterge cîmp"
+
+"About" "Despre"
+
+"Empty field name ?" "Nume cimp necompletat"
+
+"All report information will be deleted.\n\nProceed ?" "Toate obiectele din raport vor fi sterse!\n\nSinteti de acord?"
+
+"Host" "Maşina"
+
+"vacuuming database %s ..." "Tasăm baza de date %s ..."
+
+"Indexes defined" "Indecşi definiţi"
+
+"You must specify field size!" "Marimea cimpului trebuie specificata"
+
+"Schema '%s' already exists!" "Schema '%s' exista deja!"
+
+"There is another field with the same name: '%s'!\n\nReplace it ?" "Mai exista un cimp cu acelasi nume: '%s'!\n\nIl inlocuim cu descrierea noua?"
+
+"Contents" "Conţinut"
+
+"Views" "Vederi"
+
+"Variable" "Variabilă"
+
+"Error executing query\n\n%s\n\nPostgreSQL error message:\n%s\nPostgreSQL status:%s" "Eroare la executia selectiei:\n\n%s\n\nMesaj de eroare PostgreSQL:\n%s\nStare:%s"
+
+"Filter conditions" "Condiţii de filtrare"
+
+"Error retrieving query definition" "Eroare la citirea definitiei pentru selectie"
+
+"Error deleting view" "Eroare la stergerea vederii"
+
+"New" "Nou"
+
+"Tables" "Tabele"
+
+"Create" "Crează"
+
+"Forms need an internal name, only literals, low case" "Machetele au nevoie de un nume intern, doar litere mici"
+
+"Do you want to save the form into the database?" "Vrei sa salvezi descrierea machetei in baza de date?"
+
+"Schema '%s' was not found!" "Schema '%s' nu a fost gasita!"
+
+"proportional" "proporţional"
+
+"Function saved!" "Functia a fost salvata!"
+
+"with OIDs" "cu OID-uri"
+
+"Table information" "Informaţii despre tabela"
+
+"Error inserting new record" "Eroare la adaugarea noii inregistrari"
+
+"Column name '%s' already exists in this table!" "Cimpul '%s' exista deja in tabela!"
+
+"File" "Fişier"
+
+"Your table has no fields!" "Tabela asta nu are nici un cimp ?"
+
+"Height" "Înălţime"
+
+"You will always get the latest version at:" "Întotdeauna ultima versiune se va găsi la"
+
+"Form must have a name" "Macheta trebuie sa aiba si ea un nume!"
+
+"Password" "Parolă"
+
+"Valid until (date)" "Valabil pînă la"
+
+"Report source" "Sursa raportului"
+
+"Allow user to create databases" "Are voie să creeze baze de date"
+
+"Cancel" "Abandon"
+
+"Is clustered ?" "E conglomerat ?"
+
+"Add new column" "Adaugă cîmp nou"
+
+"Show SQL" "Arată comanda"
+
+"New name" "Nume nou"
+
+"Table '%s' not found!" "Tabela '%s' nu a fost gasita!"
+
+"Form name" "Nume machetă"
+
+"Visual designer" "Proiectare vizuală"
+
+"You choose to delete index\n\n %s \n\nProceed?" "Urmeaza sa stergeti indexul\n\n %s \n\nConfirmati?"
+
+"Error retrieving from" "Eroare la citirea tabelei"
+
+"Save query definition" "Salvează definiţia selecţiei"
+
+"A Tcl/Tk interface to\nPostgreSQL\nby Constantin Teodorescu" "O interfaţă Tcl/Tk pentru\nPostgreSQL\nde Constantin Teodorescu"
+
+"Operation completed!" "Operatiune terminata!"
+
+"Max rows displayed in table/query view" "Număr maxim înregistrări afişate"
+
+"Passwords do not match!" "Parolele nu se prea potrivesc!"
+
+"Rename" "Redenumeşte"
+
+"Entry" "Cîmp"
+
+"Error retrieving schema definition" "Eroare la citirea definitiei pentru plan"
+
+"This is an action query!\n\nExecute it?" "Aceasta este o comanda nu o selectie!\n\nO executam?"
+
+"Error retrieving view definition for" "Eroare la citirea definitiei pentru vederea"
+
+"options" "opţiuni"
+
+"Sequence '%s' not found!" "Secventa '%s' nu a fost gasita!"
+
+"Text" "Text"
+
+"Tcl error executing pg_exec %s\n\n%s" "Eroare Tcl la executia comenzii %s\n\n%s"
+
+"Width" "Lăţime"
+
+"You have to supply a name for this query!" "Trebuie sa dati totusi un nume acestei selectii"
+
+"Accessing data. Please wait ..." "Citim inregistrarile. Asteptati ..."
+
+"Report footer" "Încheiere raport"
+
+"Parameters" "Parametrii"
+
+"Queries" "Selecţii"
+
+"Query '%s' already exists!" "Selectia '%s' exista deja!"
+
+"Font bold" "Font îngroşat"
+
+"Query builder" "Proiectare selectii"
+
+"Error defining view" "Eroare la definirea vederii"
+
+"Top" "Sus"
+
+"You must supply a name for your table!" "Trebuie sa introduceti un nume pentru aceasta tabela!"
+
+"Page footer" "Încheiere pagină"
+
+"Font italic" "Font înclinat"
+
+"Field name not entered!" "Nu ati introdus numele cimpului!"
+
+"Index name cannot be null!" "Numele indexului trebuie sa fie completat!"
+
+"Sort" "Sortare"
+
+"Import-Export table" "Import/Export tabela"
+
+"Point" "Selectează"
+
+"type" "tip"
+
+"You should supply a name for this sequence" "Ar trebui sa dai un nume secventei"
+
+"Remove link ?" "Stergeti aceasta legatura?"
+
+"You have to supply a table name!" "Trebuie sa introduceti numele tabelei!"
+
+"Report header" "Cap de raport"
+
+"Attributes" "Atribute"
+
+"Table '%s' already in schema" "Tabela '%s' exista deja pe plan!"
+
+"Username" "Utilizator"
+
+"Minvalue" "Valoare minimă"
+
+"Sequence name" "Nume secvenţă"
+
+"Define sequence" "Defineşte secvenţă"
+
+"Function" "Funcţie"
+
+"Sorting and filtering not (yet) available from queries!\n\nPlease enter them in the query definition!" "Sortari si filtrari nu se pot face din vizualizare selectii\n\nSpecificati-le in definitia selectiei!"
+
+"Reports" "Rapoarte"
+
+"primary key" "cheie primară"
+
+"Back" "Inapoi"
+
+"Columns" "Coloane"
+
+"Indexes" "Indecşi"
+
+"Permissions" "Drepturi"
+
+"not null" "nenul"
+
+"Cluster index" "Aglomerează indexul"
+
+"index columns" "compunerea indexului"
+
+"Add user" "Adaugă utilizator"
+
+"Change permissions" "Schimbă drepturile de acces"
+
+"select" "selecţii"
+
+"update" "actualizări"
+
+"insert" "inserări"
+
+"rule" "reguli"
+
+"Identification" "Identificare"
+
+"Owner ID" "ID-ul proprietarului"
+
+"Has primary key ?" "Are cheie primară ?"
+
+"Has rules ?" "Are reguli definite ?"
+
+"Statistics" "Statistice"
+
+"Number of tuples" "Număr înregistrări"
+
+"Number of pages" "Număr pagini"
+
+"Index name" "Nume index"
+
+"Index fields" "Coloanele indexului"
+
+"Table OID" "OID-ul tabelei"
+}