From 4c87f79854f45f2279db96bd203980b839343f67 Mon Sep 17 00:00:00 2001
From: Bruce Momjian <bruce@momjian.us>
Date: Sat, 12 Dec 1998 21:15:40 +0000
Subject: [PATCH] Update to pgaccess 0.93.

---
 src/bin/pgaccess/README.pga   |   20 +-
 src/bin/pgaccess/index.html   |  211 ++--
 src/bin/pgaccess/libpgtcl.dll |  Bin 0 -> 48128 bytes
 src/bin/pgaccess/libpq.dll    |  Bin 0 -> 78336 bytes
 src/bin/pgaccess/pgaccess.tcl | 2175 ++++++++++++++++++---------------
 5 files changed, 1270 insertions(+), 1136 deletions(-)
 create mode 100644 src/bin/pgaccess/libpgtcl.dll
 create mode 100644 src/bin/pgaccess/libpq.dll

diff --git a/src/bin/pgaccess/README.pga b/src/bin/pgaccess/README.pga
index 8e5abc0c948..b19c313c39f 100644
--- a/src/bin/pgaccess/README.pga
+++ b/src/bin/pgaccess/README.pga
@@ -22,7 +22,7 @@ PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
 ---------------------------------------------------------------------------
 
 
-PGACCESS 0.91 1 November 1998
+PGACCESS 0.93 10 December 1998
 ================================
 I dedicate this program to my little daughters Ana-Maria and Emilia and to my
 wife for their understanding. I hope they will forgive me for spending so many
@@ -55,8 +55,17 @@ loadable object file, because libpgtcl is a collection of object files.
 
 Under Linux, this is called libpgtcl.so.  You will find a pre-compiled
 copy of it for Linux i386 systems at : http://www.flex.ro/pgaccess. 
-Just copy libpgtcl.so into your system library director (/usr/lib) and
-go for it.
+Just copy libpgtcl.so into your system library directory /usr/lib or
+/lib and go for it.
+
+Under Windows, copy libpgtcl.dll and libpq.dll into C:\WINDOWS\SYSTEM directory.
+Make sure you have Tcl/Tk at least version 8.0.0 for Microsoft Windows 95 & NT.
+PgAccess has been checked with Tcl/Tk 8.0.4 version on Windows95 and Windows98
+platforms.
+
+Tcl/Tk 8.0.4 for Windows95 & NT can be downloaded from 
+ftp://ftp.scriptics.com/pub/tcl/tcl8_0/tcl804.exe
+It is 1833712 bytes long.
 
 
 3.How to run it?
@@ -79,10 +88,10 @@ pgaccess.tcl file.
 
 - Opens any database on a specified host at the specified port, username and password
 - Perform vacuum command.
-- Saves preferences in ~/pgaccessrc file
+- Saves preferences in ~/.pgaccessrc file
 
 Tables
-- opening tables for viewing, max 200 records
+- opening multiple tables for viewing, max n records (configurable)
 - column resizing by dragging the vertical grid lines
 - text will wrap in cells now
 - dynamic row height when editing
@@ -135,7 +144,6 @@ Scripts
 
 5.What it should do in the future ?
 
-- table design (add new fields, renaming, etc)
 - sequence and function renaming
 - more powerful report generator and viewer
 - help on line
diff --git a/src/bin/pgaccess/index.html b/src/bin/pgaccess/index.html
index e943fe402bd..57b1dc59ae5 100644
--- a/src/bin/pgaccess/index.html
+++ b/src/bin/pgaccess/index.html
@@ -1,144 +1,129 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <HTML>
 <HEAD>
-   <TITLE>PgAccess - a Tcl/Tk PostgreSQL interface</TITLE>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-   <META NAME="GENERATOR" CONTENT="Mozilla/3.04Gold (X11; I; Linux 2.0.33 i586) [Netscape]">
+   <META NAME="GENERATOR" CONTENT="Mozilla/4.07 [en] (X11; I; Linux 2.0.36 i586) [Netscape]">
+   <TITLE>PgAccess - a Tcl/Tk PostgreSQL interface</TITLE>
 </HEAD>
 <BODY BGCOLOR="#FFFFFF">
 
-<H1>PgAccess - a free database management tool for <A HREF="http://www.postgreSQL.org">PostgreSQL</A></H1>
-
-<P>
-<HR></P>
-
-<LI><A HREF="pgaccess-0.91.tar.gz">Download the last version of PgAccess
-(press shift and click this link)</A>.</LI>
-
-<CENTER><P>Latest version of PgAccess is 0.91 , 1 November 1998 ! <BR>
-<BR>
-&nbsp; <B><FONT COLOR="#FF0000">NEW * NEW * NEW *</FONT></B> <B><FONT COLOR="#FF0000">
-NEW *</FONT></B> ==== &gt; <B><FONT SIZE=+1>QUERY PARAMETERS</FONT></B>
-(see section Queries below)<BR>
-<BR>
-Precompiled libpgtcl and libpq binaries for i386 are <A HREF="ftp://ftp.flex.ro/pub/pgaccess">here
-</A>!!! <BR>
-&nbsp; </P></CENTER>
-
-<CENTER><TABLE BORDER=3 CELLSPACING=0 CELLPADDING=0 WIDTH="100%" BGCOLOR="#FFB6C1" >
-<TR>
-<TD>
-<CENTER><P><B><FONT SIZE=+2>PgAccess can now design <A HREF="forms.html">Forms</A></FONT></B>,
-<B><FONT SIZE=+2><A HREF="pga-rad.html">Reports and Scripts</A></FONT></B>&nbsp;
-</P></CENTER>
-</TD>
-</TR>
-</TABLE></CENTER>
-
-<H3><FONT COLOR="#000080">Installation problems</FONT></H3>
+<H1>
+PgAccess - a free database management tool for <A HREF="http://www.postgreSQL.org">PostgreSQL</A></H1>
+
+<HR>
+<LI>
+Download the last version of PgAccess <A HREF="pgaccess-0.93.tar.gz">(press
+shift and click this link) (tar.gz file)</A>&nbsp; or&nbsp;&nbsp; <A HREF="pgaccess.zip">this
+one (zip file for Windows)</A></LI>
+
+<CENTER>
+<P><BR>Latest stable version of PgAccess is 0.93 , released 10 December
+1998 !
+<P><FONT SIZE=+2><B><FONT COLOR="#FF0000">NEW *</FONT></B> <B><FONT COLOR="#FF0000">NEW
+*</FONT></B></FONT><B><FONT COLOR="#FF0000">&nbsp;</FONT><FONT COLOR="#000000"><FONT SIZE=+1>
+==> </FONT><FONT SIZE=+2>Microsoft Windows compatible version</FONT></FONT></B>
+<P>&nbsp; <B><FONT COLOR="#FF0000">NEW *</FONT></B> ==== > <B>PostgreSQL
+user management, multiple table views</B>,. <B>Query parameters</B> (see
+section Queries below)
+<P>Precompiled libpgtcl and libpq binaries and dll's for i386 are <A HREF="ftp://ftp.flex.ro/pub/pgaccess">here
+</A>!!!</CENTER>
+
+<BR>&nbsp;
+<H3>
+<FONT COLOR="#000080">Installation problems</FONT></H3>
 
 <UL>
-<LI>Some problems related with locale special characters could be solved
-by this <A HREF="specialchars.html">simple patch</A></LI>
+<LI>
+Some problems related with locale special characters could be solved by
+this <A HREF="specialchars.html">simple patch</A></LI>
 
-<LI>I think that there were some problems loading libpgtcl library. I invite
+<LI>
+I think that there were some problems loading libpgtcl library. I invite
 you to read a <A HREF="index.html#libpgtcl">special section concerning
 libpgtcl</A></LI>
 
-<LI>For Silicon Graphics Indigo computers, Irix operating system, there
-is a <A HREF="irix.html">HOWTO make PgAccess to work</A></LI>
+<LI>
+For Silicon Graphics Indigo computers, Irix operating system, there is
+a <A HREF="irix.html">HOWTO make PgAccess to work</A></LI>
 </UL>
 
-<H3><FONT COLOR="#191970">What does PgAccess now!</FONT></H3>
-
-<P>Here are some screenshots from PgAccess windows : <A HREF="pic-pga-1.gif">Main
+<H3>
+<FONT COLOR="#191970">What does PgAccess now!</FONT></H3>
+Here are some screenshots from PgAccess windows : <A HREF="pic-pga-1.gif">Main
 window </A>, <A HREF="pic-pga-2.gif">table builder </A>, <A HREF="pic-pga-4.gif">table(query)
-view </A>, <A HREF="pic-pga-3.gif">visual query builder </A>. </P>
-
-<P><B>Tables</B> <BR>
-- opening tables for viewing, max. 200 records (changed by preferences
-menu) <BR>
-- column resizing, dragging the vertical grid line (better in table space
-rather than in the table header) <BR>
-- text wrap in cells - layout saved for every table <BR>
-- import/export to external files (SDF,CSV) <BR>
-- filter capabilities (enter filter like (price&gt;3.14) <BR>
-- sort order capabilities (enter manually the sort field(s)) <BR>
-- editing in place <BR>
-- improved table generator assistant <BR>
-- improved field editing <BR>
-<B>Queries</B> <BR>
-- define , edit and stores &quot;user defined queries&quot; <BR>
-- store queries as views <BR>
-- execution of queries with optional user input parameters ( select * from
-invoices where year=[parameter &quot;Year of selection&quot;] )<BR>
-- viewing of select type queries result <BR>
-- query deleting and renaming <BR>
-- visual query builder with drag &amp; drop capabilities. For any of you
-who had installed the Tcl/Tk plugin for Netscape Navigator, you can see
-it at work <A HREF="qbtclet.html">clicking here</A> <BR>
-<B>Sequences</B> <BR>
-- defines sequences, delete them and inspect them <BR>
-<B>Functions</B> <BR>
-- define, inspect and delete functions in SQL language <BR>
-<B>Reports</B> <BR>
-- design and display simple reports from tables <BR>
-- fields and labels, font changing, style and size <BR>
-- saves and loads report description from database <BR>
-- show report previews, sample postscript output file <BR>
-<B>Forms</B> <BR>
-- open user defined forms <BR>
-- form design module available <BR>
-- query widget available, controls bound to query results <BR>
-- <A HREF="forms.html">click here</A> for a description of forms and how
-they can be used <BR>
-<B>Scripts</B> <BR>
-- define, modify and call user defined scripts <BR>
-Here is <A HREF="pga-rad.html">a special section concerning forms and scripts</A>
-. </P>
-
-<P>On the TO-DO list! <BR>
-- table design (add new fields, renaming, etc.) </P>
-
+view </A>, <A HREF="pic-pga-3.gif">visual query builder </A>.
+<P><B>Tables</B>
+<BR>- opening multiple tables for viewing, max. n records (changed by preferences
+menu)
+<BR>- column resizing, dragging the vertical grid line (better in table
+space rather than in the table header)
+<BR>- text wrap in cells - layout saved for every table
+<BR>- import/export to external files (SDF,CSV)
+<BR>- filter capabilities (enter filter like (price>3.14)
+<BR>- sort order capabilities (enter manually the sort field(s))
+<BR>- editing in place
+<BR>- improved table generator assistant
+<BR>- improved field editing
+<BR><B>Queries</B>
+<BR>- define , edit and stores "user defined queries"
+<BR>- store queries as views
+<BR>- execution of queries with optional user input parameters ( select
+* from invoices where year=[parameter "Year of selection"] )
+<BR>- viewing of select type queries result
+<BR>- query deleting and renaming
+<BR>- visual query builder with drag &amp; drop capabilities. For any of
+you who had installed the Tcl/Tk plugin for Netscape Navigator, you can
+see it at work <A HREF="qbtclet.html">clicking here</A>
+<BR><B>Sequences</B>
+<BR>- defines sequences, delete them and inspect them
+<BR><B>Functions</B>
+<BR>- define, inspect and delete functions in SQL language
+<BR><B>Reports</B>
+<BR>- design and display simple reports from tables
+<BR>- fields and labels, font changing, style and size
+<BR>- saves and loads report description from database
+<BR>- show report previews, sample postscript output file
+<BR><B>Forms</B>
+<BR>- open user defined forms
+<BR>- form design module available
+<BR>- query widget available, controls bound to query results
+<BR>- <A HREF="forms.html">click here</A> for a description of forms and
+how they can be used
+<BR><B>Scripts</B>
+<BR>- define, modify and call user defined scripts
+<BR><B>Users</B>
+<BR>- define and modify user parameters
+<P>Here is <A HREF="pga-rad.html">a special section concerning forms and
+scripts</A> .
 <P>This program is protected by the following <A HREF="copyright.html">copyright</A>
-</P>
-
 <P>If you have any comment, suggestion for improvements, please feel free
-to e-mail to : <A HREF="mailto:teo@flex.ro">teo@flex.ro&nbsp;</A> </P>
-
+to e-mail to : <A HREF="mailto:teo@flex.ro">teo@flex.ro</A>
 <P><B><FONT COLOR="#FF1493"><FONT SIZE=+2>Mailing list for PgAccess </FONT></FONT></B><A HREF="maillist.html">Here
-you will find how to subscribe to this mailing list</A>. </P>
-
+you will find how to subscribe to this mailing list</A>.
 <P>
-<HR></P>
-
-<H1>More information about libpgtcl - downloads</H1>
-
-<P>&nbsp;&nbsp;&nbsp;&nbsp; Also, you will need the PostgreSQL to Tcl interface
+<HR>
+<H1>
+More information about libpgtcl - downloads</H1>
+&nbsp;&nbsp;&nbsp;&nbsp; Also, you will need the PostgreSQL to Tcl interface
 library, lined as a Tcl/Tk 'load'-able module. It is called libpgtcl and
 the source is located in the PostgreSQL directory /src/interfaces/libpgtcl.
 Specifically, you will need a libpgtcl library that is 'load'-able from
 Tcl/Tk.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; This is technically different from
 an ordinary PostgreSQL loadable object file, because libpgtcl is a collection
-of object files. Under Linux, this is called libpgtcl.so. <BR>
-&nbsp;&nbsp;&nbsp;&nbsp; You can download <B><A HREF="lib-pg63-redhat42.tar.gz">from
-here</A></B>&nbsp; libpgtcl.so and libpq.so compiled for PostgreSQL 6.3
-version running on a Linux RedHat 4.2 i386 systems. Just copy libpgtcl.so
-and libpq.so into your system library directory (/usr/lib or /lib) and
-go for it. </P>
-
+of object files. Under Linux, this is called libpgtcl.so.
 <P>&nbsp;&nbsp;&nbsp;&nbsp; One of the solutions is to remove from the
 source the line containing <B>load libpgtcl.so </B>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. </P>
-
-<P>&nbsp;&nbsp;&nbsp;&nbsp; If you have installed RedHat 5.0, you should
+libpgtcl library! I do not recommend this one.
+<P>&nbsp;&nbsp;&nbsp;&nbsp; If you have installed RedHat 5.x, you should
 get the last distribution kit of PostgreSQL and compile it from scratch.
-RedHat 5.0 is using some new versions of libraries and you have to compile
+RedHat 5.x is using some new versions of libraries and you have to compile
 and install again at least <B>libpq </B>and <B><TT>libpgtcl </TT></B>libraries.
-</P>
-
-<P>However, the application should work without problems! </P>
-
+<P>&nbsp;&nbsp;&nbsp; PostgreSQL 6.4 release has a minor bug. I does not
+includ 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.
+<BR>&nbsp;
 </BODY>
 </HTML>
diff --git a/src/bin/pgaccess/libpgtcl.dll b/src/bin/pgaccess/libpgtcl.dll
new file mode 100644
index 0000000000000000000000000000000000000000..3e631d501708bff7406352c1968c61948ab771d6
GIT binary patch
literal 48128
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
Ot2De`{QdtVf&T~ejfGDD

literal 0
HcmV?d00001

diff --git a/src/bin/pgaccess/libpq.dll b/src/bin/pgaccess/libpq.dll
new file mode 100644
index 0000000000000000000000000000000000000000..1079f2fa7786ee1335efc58533b21e3451cb523f
GIT binary patch
literal 78336
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

literal 0
HcmV?d00001

diff --git a/src/bin/pgaccess/pgaccess.tcl b/src/bin/pgaccess/pgaccess.tcl
index 78079b39e3d..c8d73aaabfa 100644
--- a/src/bin/pgaccess/pgaccess.tcl
+++ b/src/bin/pgaccess/pgaccess.tcl
@@ -1,46 +1,74 @@
 #!/usr/bin/wish
-#############################################################################
-# Visual Tcl v1.11 Project
-#
 
-#################################
-# GLOBAL VARIABLES
-#
-global activetab; 
-global dbc; 
-global username;
-global password;
-global dbname; 
-global host; 
-global mw; 
-global newdbname; 
-global newhost; 
-global newpport; 
-global newusername;
-global newpassword;
-global pport; 
-global pref; 
-global qlvar; 
-global sdbname; 
-global tablist; 
 global widget;
 
-#################################
-# USER DEFINED PROCEDURES
-#
-proc init {argc argv} {
-global dbc host pport tablist mw fldval activetab qlvar
+image create bitmap dnarw -data  {
+#define down_arrow_width 15
+#define down_arrow_height 15
+static char down_arrow_bits[] = {
+	0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,
+	0x00,0x80,0xf8,0x8f,0xf0,0x87,0xe0,0x83,
+	0xc0,0x81,0x80,0x80,0x00,0x80,0x00,0x80,
+	0x00,0x80,0x00,0x80,0x00,0x80
+	}
+}
+
+proc {set_default_fonts} {} {
+global pref tcl_platform
+if {[string toupper $tcl_platform(platform)]=="WINDOWS"} {
+	set pref(font_normal) {"MS Sans Serif" 8}
+	set pref(font_bold) {"MS Sans Serif" 8 bold}
+	set pref(font_fix) {Terminal 8}
+	set pref(font_italic) {"MS Sans Serif" 8 italic}
+} else {
+	set pref(font_normal) -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*
+	set pref(font_bold) -Adobe-Helvetica-Bold-R-Normal-*-*-120-*-*-*-*-*
+	set pref(font_italic) -Adobe-Helvetica-Medium-O-Normal-*-*-120-*-*-*-*-*
+	set pref(font_fix) -*-Clean-Medium-R-Normal-*-*-130-*-*-*-*-*
+}
+}
+
+proc {set_gui_pref} {} {
+global pref
 foreach wid {Label Text Button Listbox Checkbutton Radiobutton} {
-	option add *$wid.font  -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*
+	option add *$wid.font $pref(font_normal)
 }
+option add *Entry.background #fefefe
+option add *Entry.foreground #000000
+}
+
+proc {load_pref} {} {
+global pref
+set_default_fonts
+set_gui_pref
+set retval [catch {set fid [open "~/.pgaccessrc" r]}]
+if {$retval} {
+	set pref(rows) 200
+	set pref(tvfont) clean
+	set pref(autoload) 1
+	set pref(lastdb) {}
+	set pref(lasthost) localhost
+	set pref(lastport) 5432
+	set pref(username) {}
+	set pref(password) {}
+} else {
+	while {![eof $fid]} {
+		set pair [gets $fid]
+		set pref([lindex $pair 0]) [lindex $pair 1]
+	}
+	close $fid
+	set_gui_pref
+}
+}
+
+proc init {argc argv} {
+global dbc host pport tablist mw fldval activetab qlvar mwcount pref
+load_pref
 set host localhost
 set pport 5432
 set dbc {}
-set tablist [list Tables Queries Views Sequences Functions Reports Forms Scripts]
+set tablist [list Tables Queries Views Sequences Functions Reports Forms Scripts Users]
 set activetab {}
-set mw(dirtyrec) 0
-set mw(id_edited) {}
-catch {unset qlvar}
 set qlvar(yoffs) 360
 set qlvar(xoffs) 50
 set qlvar(reswidth) 150
@@ -52,6 +80,7 @@ set qlvar(critedit) 0
 set qlvar(links) {}
 set qlvar(ntables) 0
 set qlvar(newtablename) {}
+set mwcount 0
 }
 
 init $argc $argv
@@ -68,6 +97,9 @@ proc {sqlw_display} {msg} {
 
 proc {wpg_exec} {db cmd} {
 global pgsql
+	set pgsql(cmd) "never executed"
+	set pgsql(status) "no status yet"
+	set pgsql(errmsg) "no error message yet"
 	if {[catch {
 		sqlw_display $cmd
 		set pgsql(cmd) $cmd
@@ -86,6 +118,27 @@ proc {wpg_select} {args} {
 	uplevel pg_select $args
 }
 
+proc {anfw:add} {} {
+global anfw pgsql tiw
+	if {$anfw(name)==""} {
+		show_error "Empty field name ?"
+		focus .anfw.e1
+		return
+	}		
+	if {$anfw(type)==""} {
+		show_error "No field type ?"
+		focus .anfw.e2
+		return
+	}
+	if {![sql_exec quiet "alter table \"$tiw(tablename)\" add column \"$anfw(name)\" $anfw(type)"]} {
+		show_error "Cannot add column\n\nPostgreSQL error: $pgsql(errmsg)"
+		return
+	}
+	Window destroy .anfw
+	sql_exec quiet "update pga_layout set colnames=colnames || ' {$anfw(name)}', colwidth=colwidth || ' 150',nrcols=nrcols+1 where tablename='$tiw(tablename)'"
+	show_table_information $tiw(tablename)
+}
+
 proc {add_new_field} {} {
 global ntw
 if {$ntw(fldname)==""} {
@@ -110,7 +163,7 @@ set inspos end
 for {set i 0} {$i<[.nt.lb size]} {incr i} {
 	set linie [.nt.lb get $i]
 	if {$ntw(fldname)==[string trim [string range $linie 2 33]]} {
-		if {[tk_messageBox -title Warning -message "There is another field with the same name: \"$ntw(fldname)\"!\n\nReplace it ?" -type yesno -default yes]=="no"} return
+		if {[tk_messageBox -title Warning -parent .nt -message "There is another field with the same name: \"$ntw(fldname)\"!\n\nReplace it ?" -type yesno -default yes]=="no"} return
 		.nt.lb delete $i
 		set inspos $i
 		break
@@ -167,62 +220,68 @@ if {$objtodelete==""} return;
 set temp {}
 switch $activetab {
 	Tables {
-		if {[tk_messageBox -title "FINAL WARNING" -message "You are going to delete table:\n\n$objtodelete\n\nProceed ?" -type yesno -default no]=="yes"} {
+		if {[tk_messageBox -title "FINAL WARNING" -parent .dw -message "You are going to delete table:\n\n$objtodelete\n\nProceed ?" -type yesno -default no]=="yes"} {
 			sql_exec noquiet "drop table \"$objtodelete\""
 			sql_exec quiet "delete from pga_layout where tablename='$objtodelete'"
 			cmd_Tables
 		}
 	}
 	Views {
-		if {[tk_messageBox -title "FINAL WARNING" -message "You are going to delete view:\n\n$objtodelete\n\nProceed ?" -type yesno -default no]=="yes"} {
-			sql_exec noquiet "drop view $objtodelete"
+		if {[tk_messageBox -title "FINAL WARNING" -parent .dw -message "You are going to delete view:\n\n$objtodelete\n\nProceed ?" -type yesno -default no]=="yes"} {
+			sql_exec noquiet "drop view \"$objtodelete\""
 			sql_exec quiet "delete from pga_layout where tablename='$objtodelete'"
 			cmd_Views
 		}
 	}
 	Queries {
-		if {[tk_messageBox -title "FINAL WARNING" -message "You are going to delete query:\n\n$objtodelete\n\nProceed ?" -type yesno -default no]=="yes"} {
+		if {[tk_messageBox -title "FINAL WARNING" -parent .dw -message "You are going to delete query:\n\n$objtodelete\n\nProceed ?" -type yesno -default no]=="yes"} {
 			sql_exec quiet "delete from pga_queries where queryname='$objtodelete'"
 			sql_exec quiet "delete from pga_layout where tablename='$objtodelete'"
 			cmd_Queries
 		}
 	}
 	Scripts {
-		if {[tk_messageBox -title "FINAL WARNING" -message "You are going to delete script:\n\n$objtodelete\n\nProceed ?" -type yesno -default no]=="yes"} {
+		if {[tk_messageBox -title "FINAL WARNING" -parent .dw -message "You are going to delete script:\n\n$objtodelete\n\nProceed ?" -type yesno -default no]=="yes"} {
 			sql_exec quiet "delete from pga_scripts where scriptname='$objtodelete'"
 			cmd_Scripts
 		}
 	}
 	Forms {
-		if {[tk_messageBox -title "FINAL WARNING" -message "You are going to delete form:\n\n$objtodelete\n\nProceed ?" -type yesno -default no]=="yes"} {
+		if {[tk_messageBox -title "FINAL WARNING" -parent .dw -message "You are going to delete form:\n\n$objtodelete\n\nProceed ?" -type yesno -default no]=="yes"} {
 			sql_exec quiet "delete from pga_forms where formname='$objtodelete'"
 			cmd_Forms
 		}
 	}
 	Sequences {
-		if {[tk_messageBox -title "FINAL WARNING" -message "You are going to delete sequence:\n\n$objtodelete\n\nProceed ?" -type yesno -default no]=="yes"} {
-			sql_exec quiet "drop sequence $objtodelete"
+		if {[tk_messageBox -title "FINAL WARNING" -parent .dw -message "You are going to delete sequence:\n\n$objtodelete\n\nProceed ?" -type yesno -default no]=="yes"} {
+			sql_exec quiet "drop sequence \"$objtodelete\""
 			cmd_Sequences
 		}
 	}
 	Functions {
-		if {[tk_messageBox -title "FINAL WARNING" -message "You are going to delete function:\n\n$objtodelete\n\nProceed ?" -type yesno -default no]=="yes"} {
+		if {[tk_messageBox -title "FINAL WARNING" -parent .dw -message "You are going to delete function:\n\n$objtodelete\n\nProceed ?" -type yesno -default no]=="yes"} {
 			delete_function $objtodelete
 			cmd_Functions
 		}
 	}
 	Reports {
-		if {[tk_messageBox -title "FINAL WARNING" -message "You are going to delete report:\n\n$objtodelete\n\nProceed ?" -type yesno -default no]=="yes"} {
+		if {[tk_messageBox -title "FINAL WARNING" -parent .dw -message "You are going to delete report:\n\n$objtodelete\n\nProceed ?" -type yesno -default no]=="yes"} {
 			sql_exec noquiet "delete from pga_reports where reportname='$objtodelete'"
 			cmd_Reports
 		}
 	}
+	Users {
+		if {[tk_messageBox -title "FINAL WARNING" -parent .dw -message "You are going to delete user:\n\n$objtodelete\n\nProceed ?" -type yesno -default no]=="yes"} {
+			sql_exec noquiet "drop user \"$objtodelete\""
+			cmd_Users
+		}
+	}
 }
 if {$temp==""} return;
 }
 
 proc {cmd_Design} {} {
-global dbc activetab tablename rbvar
+global dbc activetab rbvar uw
 if {$dbc==""} return;
 if {[.dw.lb curselection]==""} return;
 set objname [.dw.lb get [.dw.lb curselection]]
@@ -232,12 +291,40 @@ switch $activetab {
 	Scripts {design_script $objname}
 	Forms {fd_load_form $objname design}
 	Reports {
-	Window show .rb
-	tkwait visibility .rb
-	rb_init
-	set rbvar(reportname) $objname
-	rb_load_report
-	set rbvar(justpreview) 0
+		Window show .rb
+		tkwait visibility .rb
+		rb_init
+		set rbvar(reportname) $objname
+		rb_load_report
+		set rbvar(justpreview) 0
+	}
+	Users {
+		Window show .uw
+		tkwait visibility .uw
+		wm transient .uw .dw
+		wm title .uw "Design user"
+		set uw(username) $objname
+		set uw(password) {} ; set uw(verify) {}
+		pg_select $dbc "select *,date(valuntil) as valdata from pg_user where usename='$objname'" tup {
+			if {$tup(usesuper)=="t"} {
+				set uw(createuser) CREATEUSER
+			} else {
+				set uw(createuser) NOCREATEUSER
+			}
+			if {$tup(usecreatedb)=="t"} {
+				set uw(createdb) CREATEDB
+			} else {
+				set uw(createdb) NOCREATEDB
+			}
+			if {$tup(valuntil)!=""} {
+				set uw(valid) $tup(valdata)
+			} else {
+				set uw(valid) {}
+			}
+		}
+		.uw.e1 configure -state disabled
+		.uw.b1 configure -text Alter
+		focus .uw.e2
 	}
 }
 }
@@ -299,19 +386,30 @@ show_table_information [get_dwlb_Selection]
 }
 
 proc {cmd_New} {} {
-global dbc activetab queryname queryoid cbv funcpar funcname funcret rbvar
+global dbc activetab queryname queryoid cbv funcpar funcname funcret rbvar uw
 if {$dbc==""} return;
 switch $activetab {
 	Tables {
-	Window show .nt
-	focus .nt.etabn
+		Window show .nt
+		focus .nt.etabn
 	}
 	Queries {
-	Window show .qb
-	set queryoid 0
-	set queryname {}
-		set cbv 0
-	.qb.cbv configure -state normal
+		Window show .qb
+		set queryoid 0
+		set queryname {}
+			set cbv 0
+		.qb.cbv configure -state normal
+	}
+	Users {
+		Window show .uw
+		wm transient .uw .dw
+		set uw(username) {}
+		set uw(password) {}
+		set uw(createdb) NOCREATEDB
+		set uw(createuser) NOCREATEUSER
+		set uw(verify) {}
+		set uw(valid) {}
+		focus .uw.e1
 	}
 	Views {
 	set queryoid 0
@@ -336,7 +434,7 @@ switch $activetab {
 		fd_init
 	}
 	Scripts {
-	design_script {}
+		design_script {}
 	}
 	Functions {
 	Window show .fw
@@ -377,21 +475,52 @@ proc {cmd_Queries} {} {
 global dbc
 .dw.lb delete 0 end
 catch {
-	wpg_select $dbc "select * from pga_queries order by queryname" rec {
+	wpg_select $dbc "select queryname from pga_queries order by queryname" rec {
 		.dw.lb insert end $rec(queryname)
 	}
 }
 }
 
+proc {uw:create_user} {} {
+global dbc uw
+set uw(username) [string trim $uw(username)]
+set uw(password) [string trim $uw(password)]
+set uw(verify) [string trim $uw(verify)]
+if {$uw(username)==""} {
+	show_error "User without name!"
+	focus .uw.e1
+	return
+}
+if {$uw(password)!=$uw(verify)} {
+	show_error "Passwords do not match!"
+	set uw(password) {} ; set uw(verify) {}
+	focus .uw.e2
+	return
+}
+set cmd "[.uw.b1 cget -text] user \"$uw(username)\""
+if {$uw(password)!=""} {
+	set cmd "$cmd WITH PASSWORD \"$uw(password)\" "
+}
+set cmd "$cmd $uw(createdb) $uw(createuser)"
+if {$uw(valid)!=""} {
+	set cmd "$cmd VALID UNTIL '$uw(valid)'"
+}
+if {[sql_exec noquiet $cmd]} {
+	Window destroy .uw
+	cmd_Users
+}
+}
+
 proc {cmd_Rename} {} {
 global dbc oldobjname activetab
 if {$dbc==""} return;
 if {$activetab=="Views"} return;
 if {$activetab=="Sequences"} return;
 if {$activetab=="Functions"} return;
+if {$activetab=="Users"} return;
 set temp [get_dwlb_Selection]
 if {$temp==""} {
-	tk_messageBox -title Warning -message "Please select an object first !"
+	tk_messageBox -title Warning -parent .dw -message "Please select an object first !"
 	return;
 }
 set oldobjname $temp
@@ -402,19 +531,31 @@ proc {cmd_Reports} {} {
 global dbc
 cursor_clock
 catch {
-	wpg_select $dbc "select * from pga_reports order by reportname" rec {
+	wpg_select $dbc "select reportname from pga_reports order by reportname" rec {
 	.dw.lb insert end "$rec(reportname)"
 	}
 }
 cursor_normal
 }
 
+proc {cmd_Users} {} {
+global dbc
+cursor_clock
+.dw.lb delete 0 end
+catch {
+	wpg_select $dbc "select * from pg_user order by usename" rec {
+		.dw.lb insert end $rec(usename)
+	}
+}
+cursor_normal
+}
+
 proc {cmd_Scripts} {} {
 global dbc
 cursor_clock
 .dw.lb delete 0 end
 catch {
-	wpg_select $dbc "select * from pga_scripts order by scriptname" rec {
+	wpg_select $dbc "select scriptname from pga_scripts order by scriptname" rec {
 	.dw.lb insert end $rec(scriptname)
 	}
 }
@@ -427,7 +568,7 @@ global dbc
 cursor_clock
 .dw.lb delete 0 end
 catch {
-	wpg_select $dbc "select * from pg_class where (relname not like 'pg_%') and (relkind='S') order by relname" rec {
+	wpg_select $dbc "select relname from pg_class where (relname not like 'pg_%') and (relkind='S') order by relname" rec {
 		.dw.lb insert end $rec(relname)
 	}
 }
@@ -448,7 +589,7 @@ global dbc
 cursor_clock
 .dw.lb delete 0 end
 catch {
-	wpg_select $dbc "select * from pg_class where (relname !~ '^pg_') and (relkind='r') and (relhasrules) order by relname" rec {
+	wpg_select $dbc "select relname from pg_class where (relname !~ '^pg_') and (relkind='r') and (relhasrules) order by relname" rec {
 		.dw.lb insert end $rec(relname)
 	}
 }
@@ -456,11 +597,12 @@ cursor_normal
 }
 
 proc {create_drop_down} {base x y w} {
+global pref
 if {[winfo exists $base.ddf]} {
     return
 }
 frame $base.ddf -borderwidth 1 -height 75 -relief raised -width 55
-listbox $base.ddf.lb -background #fefefe -borderwidth 1  -font -*-Clean-medium-R-Normal--*-130-*-*-*-*-*-*  -highlightthickness 0 -selectborderwidth 0 -yscrollcommand [subst {$base.ddf.sb set}]
+listbox $base.ddf.lb -background #fefefe -borderwidth 1  -font $pref(font_normal)  -highlightthickness 0 -selectborderwidth 0 -yscrollcommand [subst {$base.ddf.sb set}]
 scrollbar $base.ddf.sb -borderwidth 1 -command [subst {$base.ddf.lb yview}] -highlightthickness 0 -orient vert
 place $base.ddf -x $x -y $y -width $w -height 185 -anchor nw -bordermode ignore
 place $base.ddf.lb -x 1 -y 1 -width [expr $w-18] -height 182 -anchor nw -bordermode ignore
@@ -469,7 +611,7 @@ place $base.ddf.sb -x [expr $w-15] -y 1 -width 14 -height 183 -anchor nw -border
 
 proc {cursor_normal} {} {
 	foreach wn [winfo children .] {
-		catch {$wn configure -cursor top_left_arrow}
+		catch {$wn configure -cursor left_ptr}
 	}
 	update ; update idletasks 
 }
@@ -483,7 +625,7 @@ proc {cursor_clock} {} {
 
 proc {delete_function} {objname} {
 global dbc
-wpg_select $dbc "select * from pg_proc where proname='$objname'" rec {
+wpg_select $dbc "select proargtypes,pronargs from pg_proc where proname='$objname'" rec {
 	set funcpar $rec(proargtypes)
 	set nrpar $rec(pronargs)
 }
@@ -519,46 +661,46 @@ global draglocation
 	}
 }
 
-proc {drag_start} {w x y} {
+proc {drag_start} {wn w x y} {
 global draglocation
 catch {unset draglocation}
 set object [$w find closest $x $y]
-if {[lsearch [.mw.c gettags $object] movable]==-1} return;
-.mw.c bind movable <Leave> {}
+if {[lsearch [$wn.c gettags $object] movable]==-1} return;
+$wn.c bind movable <Leave> {}
 set draglocation(obj) $object
 set draglocation(x) $x
 set draglocation(y) $y
 set draglocation(start) $x
 }
 
-proc {drag_stop} {w x y} {
+proc {drag_stop} {wn w x y} {
 global draglocation mw dbc
 	set dlo ""
 	catch { set dlo $draglocation(obj) }
 	if {$dlo != ""} {
-		.mw.c bind movable <Leave> {.mw configure -cursor top_left_arrow}
-		.mw configure -cursor top_left_arrow
-		set ctr [get_tag_info $draglocation(obj) v]
+		$wn.c bind movable <Leave> "$wn configure -cursor left_ptr"
+		$wn configure -cursor left_ptr
+		set ctr [get_tag_info $wn $draglocation(obj) v]
 		set diff [expr $x-$draglocation(start)]
 		if {$diff==0} return;
 		set newcw {}
-		for {set i 0} {$i<$mw(colcount)} {incr i} {
+		for {set i 0} {$i<$mw($wn,colcount)} {incr i} {
 			if {$i==$ctr} {
-				lappend newcw [expr [lindex $mw(colwidth) $i]+$diff]
+				lappend newcw [expr [lindex $mw($wn,colwidth) $i]+$diff]
 			} else {
-				lappend newcw [lindex $mw(colwidth) $i]
+				lappend newcw [lindex $mw($wn,colwidth) $i]
 			}
 		}
-		set mw(colwidth) $newcw
-		.mw.c itemconfigure c$ctr -width [expr [lindex $mw(colwidth) $ctr]-5]
-		mw_draw_headers
-		mw_draw_hgrid
-		if {$mw(crtrow)!=""} {mw_show_record $mw(crtrow)}
-		for {set i [expr $ctr+1]} {$i<$mw(colcount)} {incr i} {
-			.mw.c move c$i $diff 0
+		set mw($wn,colwidth) $newcw
+		$wn.c itemconfigure c$ctr -width [expr [lindex $mw($wn,colwidth) $ctr]-5]
+		mw_draw_headers $wn
+		mw_draw_hgrid $wn
+		if {$mw($wn,crtrow)!=""} {mw_show_record $wn $mw($wn,crtrow)}
+		for {set i [expr $ctr+1]} {$i<$mw($wn,colcount)} {incr i} {
+			$wn.c move c$i $diff 0
 		}
 		cursor_clock
-		sql_exec quiet "update pga_layout set colwidth='$mw(colwidth)' where tablename='$mw(layout_name)'"
+		sql_exec quiet "update pga_layout set colwidth='$mw($wn,colwidth)' where tablename='$mw($wn,layout_name)'"
 		cursor_normal
 	}
 }
@@ -567,7 +709,7 @@ proc {draw_tabs} {} {
 global tablist activetab
 set ypos 85
 foreach tab $tablist {
-	label .dw.tab$tab -borderwidth 1  -anchor w -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*  -relief raised -text $tab
+	label .dw.tab$tab -borderwidth 1  -anchor w -relief raised -text $tab
 	place .dw.tab$tab -x 10 -y $ypos -height 25 -width 82 -anchor nw -bordermode ignore
 	lower .dw.tab$tab
 	bind .dw.tab$tab <Button-1> {tab_click %W}
@@ -622,32 +764,32 @@ fd_draw_hook $x2 $y2
 }
 
 proc {fd_draw_object} {i} {
-global fdvar fdobj
+global fdvar fdobj pref
 set c $fdobj($i,c)
 foreach {x1 y1 x2 y2} $c {}
 .fd.c delete o$i
 switch $fdobj($i,t) {
 	button {
 		fd_draw_rectangle $x1 $y1 $x2 $y2 raised #a0a0a0 o$i
-		.fd.c create text [expr ($x1+$x2)/2] [expr ($y1+$y2)/2] -text $fdobj($i,l) -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -tags o$i
+		.fd.c create text [expr ($x1+$x2)/2] [expr ($y1+$y2)/2] -text $fdobj($i,l) -font $pref(font_normal) -tags o$i
 	}
 	entry {
 		fd_draw_rectangle $x1 $y1 $x2 $y2 sunken white o$i
 	}
 	label {
-		.fd.c create text $x1 $y1 -text $fdobj($i,l) -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -anchor nw -tags o$i
+		.fd.c create text $x1 $y1 -text $fdobj($i,l) -font $pref(font_normal) -anchor nw -tags o$i
 	}
 	checkbox {
 		fd_draw_rectangle [expr $x1+2] [expr $y1+5] [expr $x1+12] [expr $y1+15] raised #a0a0a0 o$i
-		.fd.c create text [expr $x1+20] [expr $y1+3] -text $fdobj($i,l) -anchor nw -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -tags o$i
+		.fd.c create text [expr $x1+20] [expr $y1+3] -text $fdobj($i,l) -anchor nw -font $pref(font_normal) -tags o$i
 	}
 	radio {
 		.fd.c create oval [expr $x1+4] [expr $y1+5] [expr $x1+14] [expr $y1+15] -fill white -tags o$i
-		.fd.c create text [expr $x1+24] [expr $y1+3] -text $fdobj($i,l) -anchor nw -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -tags o$i
+		.fd.c create text [expr $x1+24] [expr $y1+3] -text $fdobj($i,l) -anchor nw -font $pref(font_normal) -tags o$i
 	}
 	query {
 		.fd.c create oval $x1 $y1 [expr $x1+20] [expr $y1+20] -fill white -tags o$i
-		.fd.c create text [expr $x1+5] [expr $y1+4] -text Q  -anchor nw -font -Adobe-Helvetica-Bold-R-Normal-*-*-120-*-*-*-*-* -tags o$i
+		.fd.c create text [expr $x1+5] [expr $y1+4] -text Q  -anchor nw -font $pref(font_normal) -tags o$i
 	}
 	listbox {
 		fd_draw_rectangle $x1 $y1 [expr $x2-12] $y2 sunken white o$i
@@ -889,7 +1031,7 @@ catch {set fdvar(c_text) $fdobj($i,l)}
 }
 
 proc {fd_test} {} {
-global fdvar fdobj dbc datasets
+global fdvar fdobj dbc datasets pref
 set basewp $fdvar(forminame)
 set base .$fdvar(forminame)
 if {[winfo exists $base]} {
@@ -913,10 +1055,10 @@ switch $fdobj($item,t) {
 	button {
 		set cmd {}
 		catch {set cmd $fdobj($item,x)}
-		button $base.$name  -borderwidth 1 -padx 0 -pady 0 -text "$fdobj($item,l)" -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -command [subst {$cmd}]
+		button $base.$name  -borderwidth 1 -padx 0 -pady 0 -text "$fdobj($item,l)" -font $pref(font_normal) -command [subst {$cmd}]
 	}
 	checkbox {
-		checkbutton  $base.$name -onvalue t -offvalue f -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -text "$fdobj($item,l)" -variable "$fdobj($item,v)" -borderwidth 1
+		checkbutton  $base.$name -onvalue t -offvalue f -font $pref(font_normal) -text "$fdobj($item,l)" -variable "$fdobj($item,v)" -borderwidth 1
 		set wh {}
 	}
 	query {
@@ -991,7 +1133,7 @@ switch $fdobj($item,t) {
 		}"
 	}
 	radio {
-		radiobutton  $base.$name -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -text "$fdobj($item,l)" -variable "$fdobj($item,v)" -value "$name" -borderwidth 1
+		radiobutton  $base.$name -font $pref(font_normal) -text "$fdobj($item,l)" -variable "$fdobj($item,v)" -value "$name" -borderwidth 1
 		set wh {}
 	}
 	entry {
@@ -1001,12 +1143,12 @@ switch $fdobj($item,t) {
 	}
 	label {
 		set wh {}
-		label $base.$name -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -anchor nw -padx 0 -pady 0 -text $fdobj($item,l)
+		label $base.$name -font $pref(font_normal) -anchor nw -padx 0 -pady 0 -text $fdobj($item,l)
 	set var {} ; catch {set var $fdobj($item,v)}
 	if {$var!=""} {$base.$name configure -textvar $var}
 	}
 	listbox {
-		listbox $base.$name -borderwidth 1 -background white  -highlightthickness 0 -selectborderwidth 0 -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -yscrollcommand [subst {$base.sb$name set}]
+		listbox $base.$name -borderwidth 1 -background white  -highlightthickness 0 -selectborderwidth 0 -font $pref(font_normal) -yscrollcommand [subst {$base.sb$name set}]
 	scrollbar $base.sb$name -borderwidth 1 -command [subst {$base.$name yview}] -orient vert  -highlightthickness 0
 	eval [subst "place $base.sb$name -x [expr [lindex $coord 2]-14] -y [expr [lindex $coord 1]-1] -width 16 -height [expr 3+[lindex $coord 3]-[lindex $coord 1]] -anchor nw -bordermode ignore"]
 	}
@@ -1036,248 +1178,224 @@ proc {get_tables} {} {
 global dbc
 set tbl {}
 catch {
-	wpg_select $dbc "select * from pg_class where (relname !~ '^pg_') and (relkind='r') and (not relhasrules) order by relname" rec {
+	wpg_select $dbc "select * from pg_class where (relname !~ '^pg_') and (relkind='r') order by relname" rec {
 		if {![regexp "^pga_" $rec(relname)]} then {lappend tbl $rec(relname)}
 	}
 }
 return $tbl
 }
 
-proc {get_tag_info} {itemid prefix} {
-set taglist [.mw.c itemcget $itemid -tags]
+proc {get_tag_info} {wn itemid prefix} {
+set taglist [$wn.c itemcget $itemid -tags]
 set i [lsearch -glob $taglist $prefix*]
 set thetag [lindex $taglist $i]
 return [string range $thetag 1 end]
 }
 
-proc {load_pref} {} {
-global pref
-set retval [catch {set fid [open "~/.pgaccessrc" r]}]
-if {$retval} {
-	set pref(rows) 200
-	set pref(tvfont) clean
-	set pref(autoload) 1
-	set pref(lastdb) {}
-	set pref(lasthost) localhost
-	set pref(lastport) 5432
-	set pref(username) {}
-	set pref(password) {}
-} else {
-	while {![eof $fid]} {
-		set pair [gets $fid]
-		set pref([lindex $pair 0]) [lindex $pair 1]
-	}
-	close $fid
-}
-}
-
-
-
-
-proc {mw_canvas_click} {x y} {
-global mw msg
-if {![mw_exit_edit]} return
+proc {mw_canvas_click} {wn x y} {
+global mw
+if {![mw_exit_edit $wn]} return
 # Determining row
-for {set row 0} {$row<$mw(nrecs)} {incr row} {
-	if {[lindex $mw(rowy) $row]>$y} break
+for {set row 0} {$row<$mw($wn,nrecs)} {incr row} {
+	if {[lindex $mw($wn,rowy) $row]>$y} break
 }
 incr row -1
-if {$y>[lindex $mw(rowy) $mw(last_rownum)]} {set row $mw(last_rownum)}
+if {$y>[lindex $mw($wn,rowy) $mw($wn,last_rownum)]} {set row $mw($wn,last_rownum)}
 if {$row<0} return
-set mw(row_edited) $row
-set mw(crtrow) $row
-mw_show_record $row
-if {$mw(errorsavingnew)} return
+set mw($wn,row_edited) $row
+set mw($wn,crtrow) $row
+mw_show_record $wn $row
+if {$mw($wn,errorsavingnew)} return
 # Determining column
-set posx [expr -$mw(leftoffset)]
+set posx [expr -$mw($wn,leftoffset)]
 set col 0
-foreach cw $mw(colwidth) {
+foreach cw $mw($wn,colwidth) {
 	incr posx [expr $cw+2]
 	if {$x<$posx} break
 	incr col
 }
-set itlist [.mw.c find withtag r$row]
+set itlist [$wn.c find withtag r$row]
 foreach item $itlist {
-	if {[get_tag_info $item c]==$col} {
-		mw_start_edit $item $x $y
+	if {[get_tag_info $wn $item c]==$col} {
+		mw_start_edit $wn $item $x $y
 		break
 	}
 }
 }
 
-proc {mw_delete_record} {} {
-global dbc mw tablename
-if {!$mw(updatable)} return;
-if {![mw_exit_edit]} return;
-set taglist [.mw.c gettags hili]
+proc {mw_delete_record} {wn} {
+global dbc mw
+if {!$mw($wn,updatable)} return;
+if {![mw_exit_edit $wn]} return;
+set taglist [$wn.c gettags hili]
 if {[llength $taglist]==0} return;
 set rowtag [lindex $taglist [lsearch -regexp $taglist "^r"]]
 set row [string range $rowtag 1 end]
-set oid [lindex $mw(keylist) $row]
-if {[tk_messageBox -title "FINAL WARNING" -icon question -message "Delete current record ?" -type yesno -default no]=="no"} return
-if {[sql_exec noquiet "delete from $tablename where oid=$oid"]} {
-	.mw.c delete hili
-}
-}
-
-proc {mw_draw_headers} {} {
-global mw
-.mw.c delete header
-set posx [expr 5-$mw(leftoffset)]
-for {set i 0} {$i<$mw(colcount)} {incr i} {
-	set xf [expr $posx+[lindex $mw(colwidth) $i]]
-	.mw.c create rectangle $posx 1 $xf 22 -fill #CCCCCC -outline "" -width 0 -tags header
-	.mw.c create text [expr $posx+[lindex $mw(colwidth) $i]*1.0/2] 14 -text [lindex $mw(colnames) $i] -tags header -fill navy -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*
-	.mw.c create line $posx 22 [expr $xf-1] 22 -fill #AAAAAA -tags header
-	.mw.c create line [expr $xf-1] 5 [expr $xf-1] 22 -fill #AAAAAA -tags header
-	.mw.c create line [expr $xf+1] 5 [expr $xf+1] 22 -fill white -tags header
-	.mw.c create line $xf -15000 $xf 15000 -fill #CCCCCC -tags [subst {header movable v$i}]
+set oid [lindex $mw($wn,keylist) $row]
+if {[tk_messageBox -title "FINAL WARNING" -icon question -parent $wn -message "Delete current record ?" -type yesno -default no]=="no"} return
+if {[sql_exec noquiet "delete from \"$mw($wn,tablename)\" where oid=$oid"]} {
+	$wn.c delete hili
+}
+}
+
+proc {mw_draw_headers} {wn} {
+global mw pref
+$wn.c delete header
+set posx [expr 5-$mw($wn,leftoffset)]
+for {set i 0} {$i<$mw($wn,colcount)} {incr i} {
+	set xf [expr $posx+[lindex $mw($wn,colwidth) $i]]
+	$wn.c create rectangle $posx 1 $xf 22 -fill #CCCCCC -outline "" -width 0 -tags header
+	$wn.c create text [expr $posx+[lindex $mw($wn,colwidth) $i]*1.0/2] 14 -text [lindex $mw($wn,colnames) $i] -tags header -fill navy -font $pref(font_normal)
+	$wn.c create line $posx 22 [expr $xf-1] 22 -fill #AAAAAA -tags header
+	$wn.c create line [expr $xf-1] 5 [expr $xf-1] 22 -fill #AAAAAA -tags header
+	$wn.c create line [expr $xf+1] 5 [expr $xf+1] 22 -fill white -tags header
+	$wn.c create line $xf -15000 $xf 15000 -fill #CCCCCC -tags [subst {header movable v$i}]
 	set posx [expr $xf+2]
 }
-set mw(r_edge) $posx
-.mw.c bind movable <Button-1> {drag_start %W %x %y}
-.mw.c bind movable <B1-Motion> {drag_it %W %x %y}
-.mw.c bind movable <ButtonRelease-1> {drag_stop %W %x %y}
-.mw.c bind movable <Enter> {.mw configure -cursor left_side}
-.mw.c bind movable <Leave> {.mw configure -cursor top_left_arrow}
+set mw($wn,r_edge) $posx
+$wn.c bind movable <Button-1> "drag_start $wn %W %x %y"
+$wn.c bind movable <B1-Motion> {drag_it %W %x %y}
+$wn.c bind movable <ButtonRelease-1> "drag_stop $wn %W %x %y"
+$wn.c bind movable <Enter> "$wn configure -cursor left_side"
+$wn.c bind movable <Leave> "$wn configure -cursor left_ptr"
 }
 
-proc {mw_draw_hgrid} {} {
+proc {mw_draw_hgrid} {wn} {
 global mw
-.mw.c delete hgrid
+$wn.c delete hgrid
 set posx 10
-for {set j 0} {$j<$mw(colcount)} {incr j} {
+for {set j 0} {$j<$mw($wn,colcount)} {incr j} {
 	set ledge($j) $posx
-	incr posx [expr [lindex $mw(colwidth) $j]+2]
-	set textwidth($j) [expr [lindex $mw(colwidth) $j]-5]
+	incr posx [expr [lindex $mw($wn,colwidth) $j]+2]
+	set textwidth($j) [expr [lindex $mw($wn,colwidth) $j]-5]
 }
 incr posx -6
-for {set i 0} {$i<$mw(nrecs)} {incr i} {
-	.mw.c create line [expr -$mw(leftoffset)] [lindex $mw(rowy) [expr $i+1]] [expr $posx-$mw(leftoffset)] [lindex $mw(rowy) [expr $i+1]] -fill gray -tags [subst {hgrid g$i}]
+for {set i 0} {$i<$mw($wn,nrecs)} {incr i} {
+	$wn.c create line [expr -$mw($wn,leftoffset)] [lindex $mw($wn,rowy) [expr $i+1]] [expr $posx-$mw($wn,leftoffset)] [lindex $mw($wn,rowy) [expr $i+1]] -fill gray -tags [subst {hgrid g$i}]
 }
-if {$mw(updatable)} {
-	set i $mw(nrecs)
-	set posy [expr 14+[lindex $mw(rowy) $mw(nrecs)]]
-	.mw.c create line [expr -$mw(leftoffset)] $posy [expr $posx-$mw(leftoffset)] $posy -fill gray -tags [subst {hgrid g$i}]
+if {$mw($wn,updatable)} {
+	set i $mw($wn,nrecs)
+	set posy [expr 14+[lindex $mw($wn,rowy) $mw($wn,nrecs)]]
+	$wn.c create line [expr -$mw($wn,leftoffset)] $posy [expr $posx-$mw($wn,leftoffset)] $posy -fill gray -tags [subst {hgrid g$i}]
 }
 }
 
-proc {mw_draw_new_record} {} {
-global mw pref msg
-set posx 10
-set posy [lindex $mw(rowy) $mw(last_rownum)]
+proc {mw_draw_new_record} {wn} {
+global mw pref
+set posx [expr 10-$mw($wn,leftoffset)]
+set posy [lindex $mw($wn,rowy) $mw($wn,last_rownum)]
 if {$pref(tvfont)=="helv"} {
-	set tvfont -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*
+	set tvfont $pref(font_normal)
 } else {
-	set tvfont -*-Clean-Medium-R-Normal-*-*-130-*-*-*-*-*
+	set tvfont $pref(font_fix)
 }
-if {$mw(updatable)} {
-  for {set j 0} {$j<$mw(colcount)} {incr j} {
-	.mw.c create text $posx $posy -text * -tags [subst {r$mw(nrecs) c$j q new unt}]  -anchor nw -font $tvfont -width [expr [lindex $mw(colwidth) $j]-5]
-	incr posx [expr [lindex $mw(colwidth) $j]+2]
+if {$mw($wn,updatable)} {
+  for {set j 0} {$j<$mw($wn,colcount)} {incr j} {
+	$wn.c create text $posx $posy -text * -tags [subst {r$mw($wn,nrecs) c$j q new unt}]  -anchor nw -font $tvfont -width [expr [lindex $mw($wn,colwidth) $j]-5]
+	incr posx [expr [lindex $mw($wn,colwidth) $j]+2]
   }
   incr posy 14
-  .mw.c create line [expr -$mw(leftoffset)] $posy [expr $mw(r_edge)-$mw(leftoffset)] $posy -fill gray -tags [subst {hgrid g$mw(nrecs)}]
+  $wn.c create line [expr -$mw($wn,leftoffset)] $posy [expr $mw($wn,r_edge)-$mw($wn,leftoffset)] $posy -fill gray -tags [subst {hgrid g$mw($wn,nrecs)}]
 }
 }
 
-proc {mw_edit_text} {c k} {
-global mw msg
-set bbin [.mw.c bbox r$mw(row_edited)]
+proc {mw_edit_text} {wn c k} {
+global mw
+set bbin [$wn.c bbox r$mw($wn,row_edited)]
 switch $k {
-	BackSpace { set dp [expr [.mw.c index $mw(id_edited) insert]-1];if {$dp>=0} {.mw.c dchars $mw(id_edited) $dp $dp; set mw(dirtyrec) 1}}
-	Home {.mw.c icursor $mw(id_edited) 0}
-	End {.mw.c icursor $mw(id_edited) end}
-	Left {.mw.c icursor $mw(id_edited) [expr [.mw.c index $mw(id_edited) insert]-1]}
+	BackSpace { set dp [expr [$wn.c index $mw($wn,id_edited) insert]-1];if {$dp>=0} {$wn.c dchars $mw($wn,id_edited) $dp $dp; set mw($wn,dirtyrec) 1}}
+	Home {$wn.c icursor $mw($wn,id_edited) 0}
+	End {$wn.c icursor $mw($wn,id_edited) end}
+	Left {$wn.c icursor $mw($wn,id_edited) [expr [$wn.c index $mw($wn,id_edited) insert]-1]}
 	Delete {}
-	Right {.mw.c icursor $mw(id_edited) [expr [.mw.c index $mw(id_edited) insert]+1]}
-	Return {if {[mw_exit_edit]} {.mw.c focus {}}}
-	Escape {set mw(dirtyrec) 0; .mw.c itemconfigure $mw(id_edited) -text $mw(text_initial_value); .mw.c focus {}}
-	default {if {[string compare $c " "]>-1} {.mw.c insert $mw(id_edited) insert $c;set mw(dirtyrec) 1}}
+	Right {$wn.c icursor $mw($wn,id_edited) [expr [$wn.c index $mw($wn,id_edited) insert]+1]}
+	Return {if {[mw_exit_edit $wn]} {$wn.c focus {}}}
+	Escape {set mw($wn,dirtyrec) 0; $wn.c itemconfigure $mw($wn,id_edited) -text $mw($wn,text_initial_value); $wn.c focus {}}
+	default {if {[string compare $c " "]>-1} {$wn.c insert $mw($wn,id_edited) insert $c;set mw($wn,dirtyrec) 1}}
 }
-set bbout [.mw.c bbox r$mw(row_edited)]
+set bbout [$wn.c bbox r$mw($wn,row_edited)]
 set dy [expr [lindex $bbout 3]-[lindex $bbin 3]]
 if {$dy==0} return
-set re $mw(row_edited)
-.mw.c move g$re 0 $dy
-for {set i [expr 1+$re]} {$i<=$mw(nrecs)} {incr i} {
-	.mw.c move r$i 0 $dy
-	.mw.c move g$i 0 $dy
-	set rh [lindex $mw(rowy) $i]
+set re $mw($wn,row_edited)
+$wn.c move g$re 0 $dy
+for {set i [expr 1+$re]} {$i<=$mw($wn,nrecs)} {incr i} {
+	$wn.c move r$i 0 $dy
+	$wn.c move g$i 0 $dy
+	set rh [lindex $mw($wn,rowy) $i]
 	incr rh $dy
-	set mw(rowy) [lreplace $mw(rowy) $i $i $rh]
+	set mw($wn,rowy) [lreplace $mw($wn,rowy) $i $i $rh]
 }
-mw_show_record $mw(row_edited)
+mw_show_record $wn $mw($wn,row_edited)
 # Delete is trapped by window interpreted as record delete
-#    Delete {.mw.c dchars $mw(id_edited) insert insert; set mw(dirtyrec) 1}
+#    Delete {$wn.c dchars $mw($wn,id_edited) insert insert; set mw($wn,dirtyrec) 1}
 }
 
-proc {mw_exit_edit} {} {
-global mw dbc msg tablename
+proc {mw_exit_edit} {wn} {
+global mw dbc
 # User has edited the text ?
-if {!$mw(dirtyrec)} {
+if {!$mw($wn,dirtyrec)} {
 	# No, unfocus text
-	.mw.c focus {}
+	$wn.c focus {}
 	# For restoring * to the new record position
-	if {$mw(id_edited)!=""} {
-		if {[lsearch [.mw.c gettags $mw(id_edited)] new]!=-1} {
-			.mw.c itemconfigure $mw(id_edited) -text $mw(text_initial_value)
+	if {$mw($wn,id_edited)!=""} {
+		if {[lsearch [$wn.c gettags $mw($wn,id_edited)] new]!=-1} {
+			$wn.c itemconfigure $mw($wn,id_edited) -text $mw($wn,text_initial_value)
 		}
 	}
-	set mw(id_edited) {};set mw(text_initial_value) {}
+	set mw($wn,id_edited) {};set mw($wn,text_initial_value) {}
 	return 1
 }
 # Trimming the spaces
-set fldval [string trim [.mw.c itemcget $mw(id_edited) -text]]
-.mw.c itemconfigure $mw(id_edited) -text $fldval
-if {[string compare $mw(text_initial_value) $fldval]==0} {
-	set mw(dirtyrec) 0
-	.mw.c focus {}
-	set mw(id_edited) {};set mw(text_initial_value) {}
+set fldval [string trim [$wn.c itemcget $mw($wn,id_edited) -text]]
+$wn.c itemconfigure $mw($wn,id_edited) -text $fldval
+if {[string compare $mw($wn,text_initial_value) $fldval]==0} {
+	set mw($wn,dirtyrec) 0
+	$wn.c focus {}
+	set mw($wn,id_edited) {};set mw($wn,text_initial_value) {}
 	return 1
 }
 cursor_clock
-set oid [lindex $mw(keylist) $mw(row_edited)]
-set fld [lindex $mw(colnames) [get_tag_info $mw(id_edited) c]]
+set oid [lindex $mw($wn,keylist) $mw($wn,row_edited)]
+set fld [lindex $mw($wn,colnames) [get_tag_info $wn $mw($wn,id_edited) c]]
 set fillcolor black
-if {$mw(row_edited)==$mw(last_rownum)} {
+if {$mw($wn,row_edited)==$mw($wn,last_rownum)} {
 	set fillcolor red
-	set sfp [lsearch $mw(newrec_fields) "\"$fld\""]
+	set sfp [lsearch $mw($wn,newrec_fields) "\"$fld\""]
 	if {$sfp>-1} {
-		set mw(newrec_fields) [lreplace $mw(newrec_fields) $sfp $sfp]
-		set mw(newrec_values) [lreplace $mw(newrec_values) $sfp $sfp]
+		set mw($wn,newrec_fields) [lreplace $mw($wn,newrec_fields) $sfp $sfp]
+		set mw($wn,newrec_values) [lreplace $mw($wn,newrec_values) $sfp $sfp]
 	}			
-	lappend mw(newrec_fields) "\"$fld\""
-	lappend mw(newrec_values) '$fldval'
+	lappend mw($wn,newrec_fields) "\"$fld\""
+	lappend mw($wn,newrec_values) '$fldval'
 	# Remove the untouched tag from the object
-	.mw.c dtag $mw(id_edited) unt
-		.mw.c itemconfigure $mw(id_edited) -fill red
+	$wn.c dtag $mw($wn,id_edited) unt
+		$wn.c itemconfigure $mw($wn,id_edited) -fill red
 	set retval 1
 } else {
-	set msg "Updating record ..."
-	after 1000 {set msg ""}
+	set mw($wn,msg) "Updating record ..."
+	after 1000 "set mw($wn,msg) {}"
 	regsub -all ' $fldval  \\' sqlfldval
-	set retval [sql_exec noquiet "update \"$tablename\" set \"$fld\"='$sqlfldval' where oid=$oid"]
+	set retval [sql_exec noquiet "update \"$mw($wn,tablename)\" set \"$fld\"='$sqlfldval' where oid=$oid"]
 }
 cursor_normal
 if {!$retval} {
-	set msg ""
-	focus .mw.c
+	set mw($wn,msg) ""
+	focus $wn.c
 	return 0
 }
-set mw(dirtyrec) 0
-.mw.c focus {}
-set mw(id_edited) {};set mw(text_initial_value) {}
+set mw($wn,dirtyrec) 0
+$wn.c focus {}
+set mw($wn,id_edited) {};set mw($wn,text_initial_value) {}
 return 1
 }
 
-proc {mw_load_layout} {tablename} {
-global dbc msg mw
+proc {mw_load_layout} {wn layoutname} {
+global dbc mw
 cursor_clock
-set mw(layout_name) $tablename
-catch {unset mw(colcount) mw(colnames) mw(colwidth)}
-set mw(layout_found) 0
-set pgres [wpg_exec $dbc "select *,oid from pga_layout where tablename='$tablename' order by oid desc"]
+set mw($wn,layout_name) $layoutname
+catch {unset mw($wn,colcount) mw($wn,colnames) mw($wn,colwidth)}
+set mw($wn,layout_found) 0
+set pgres [wpg_exec $dbc "select *,oid from pga_layout where tablename='$layoutname' order by oid desc"]
 set pgs [pg_result $pgres -status]
 if {$pgs!="PGRES_TUPLES_OK"} {
 	# Probably table pga_layout isn't yet defined
@@ -1287,119 +1405,120 @@ if {$pgs!="PGRES_TUPLES_OK"} {
 	set nrlay [pg_result $pgres -numTuples]
 	if {$nrlay>=1} {
 		set layoutinfo [pg_result $pgres -getTuple 0]
-		set mw(colcount) [lindex $layoutinfo 1]
-		set mw(colnames)  [lindex $layoutinfo 2]
-		set mw(colwidth) [lindex $layoutinfo 3]
+		set mw($wn,colcount) [lindex $layoutinfo 1]
+		set mw($wn,colnames)  [lindex $layoutinfo 2]
+		set mw($wn,colwidth) [lindex $layoutinfo 3]
 		set goodoid [lindex $layoutinfo 4]
-		set mw(layout_found) 1
+		set mw($wn,layout_found) 1
 	}
 	if {$nrlay>1} {
 		show_error "Multiple ($nrlay) layout info found\n\nPlease report the bug!"
-		sql_exec quiet "delete from pga_layout where (tablename='$tablename') and (oid<>$goodoid)"
+		sql_exec quiet "delete from pga_layout where (tablename='$mw($wn,tablename)') and (oid<>$goodoid)"
 	}
 }
 pg_result $pgres -clear
 }
 
-proc {mw_pan_left} {} {
+proc {mw_pan_left} {wn } {
 global mw
-if {![mw_exit_edit]} return;
-if {$mw(leftcol)==[expr $mw(colcount)-1]} return;
-set diff [expr 2+[lindex $mw(colwidth) $mw(leftcol)]]
-incr mw(leftcol)
-incr mw(leftoffset) $diff
-.mw.c move header -$diff 0
-.mw.c move q -$diff 0
-.mw.c move hgrid -$diff 0
+if {![mw_exit_edit $wn]} return;
+if {$mw($wn,leftcol)==[expr $mw($wn,colcount)-1]} return;
+set diff [expr 2+[lindex $mw($wn,colwidth) $mw($wn,leftcol)]]
+incr mw($wn,leftcol)
+incr mw($wn,leftoffset) $diff
+$wn.c move header -$diff 0
+$wn.c move q -$diff 0
+$wn.c move hgrid -$diff 0
 }
 
-proc {mw_pan_right} {} {
+proc {mw_pan_right} {wn} {
 global mw
-if {![mw_exit_edit]} return;
-if {$mw(leftcol)==0} return;
-incr mw(leftcol) -1
-set diff [expr 2+[lindex $mw(colwidth) $mw(leftcol)]]
-incr mw(leftoffset) -$diff
-.mw.c move header $diff 0
-.mw.c move q $diff 0
-.mw.c move hgrid $diff 0
-}
-
-proc {mw_save_new_record} {} {
-global dbc mw tablename msg
-if {![mw_exit_edit]} {return 0}
-if {$mw(newrec_fields)==""} {return 1}
-set msg "Saving new record ..."
-after 1000 {set msg ""}
-set pgres [wpg_exec $dbc "insert into \"$tablename\" ([join $mw(newrec_fields) ,]) values ([join $mw(newrec_values) ,])" ]
+if {![mw_exit_edit $wn]} return;
+if {$mw($wn,leftcol)==0} return;
+incr mw($wn,leftcol) -1
+set diff [expr 2+[lindex $mw($wn,colwidth) $mw($wn,leftcol)]]
+incr mw($wn,leftoffset) -$diff
+$wn.c move header $diff 0
+$wn.c move q $diff 0
+$wn.c move hgrid $diff 0
+}
+
+proc {mw_save_new_record} {wn} {
+global dbc mw
+if {![mw_exit_edit $wn]} {return 0}
+if {$mw($wn,newrec_fields)==""} {return 1}
+set mw($wn,msg) "Saving new record ..."
+after 1000 "set mw($wn,msg) {}"
+set pgres [wpg_exec $dbc "insert into \"$mw($wn,tablename)\" ([join $mw($wn,newrec_fields) ,]) values ([join $mw($wn,newrec_values) ,])" ]
 if {[pg_result $pgres -status]!="PGRES_COMMAND_OK"} {
 	set errmsg [pg_result $pgres -error]
 	show_error "Error inserting new record\n\n$errmsg"
 	return 0
 }
 set oid [pg_result $pgres -oid]
-lappend mw(keylist) $oid
+lappend mw($wn,keylist) $oid
 pg_result $pgres -clear
 # Get bounds of the last record
-set lrbb [.mw.c bbox new]
-lappend mw(rowy) [lindex $lrbb 3]
-.mw.c itemconfigure new -fill black
-.mw.c dtag q new
+set lrbb [$wn.c bbox new]
+lappend mw($wn,rowy) [lindex $lrbb 3]
+$wn.c itemconfigure new -fill black
+$wn.c dtag q new
 # Replace * from untouched new row elements with "  "
-foreach item [.mw.c find withtag unt] {
-	.mw.c itemconfigure $item -text "  "
-}
-.mw.c dtag q unt
-incr mw(last_rownum)
-incr mw(nrecs)
-mw_draw_new_record
-set mw(newrec_fields) {}
-set mw(newrec_values) {}
+foreach item [$wn.c find withtag unt] {
+	$wn.c itemconfigure $item -text "  "
+}
+$wn.c dtag q unt
+incr mw($wn,last_rownum)
+incr mw($wn,nrecs)
+mw_draw_new_record $wn
+set mw($wn,newrec_fields) {}
+set mw($wn,newrec_values) {}
 return 1
 }
 
-proc {mw_scroll_window} {par1 par2 args} {
+proc {mw_scroll_window} {wn par1 args} {
 global mw
-if {![mw_exit_edit]} return;
+if {![mw_exit_edit $wn]} return;
 if {$par1=="scroll"} {
-	set newtop $mw(toprec)
-	if {[lindex $args 0]=="units"} {
-		incr newtop $par2
+	set newtop $mw($wn,toprec)
+	if {[lindex $args 1]=="units"} {
+		incr newtop [lindex $args 0]
 	} else {
-		incr newtop [expr $par2*25]
+		incr newtop [expr [lindex $args 0]*25]
 		if {$newtop<0} {set newtop 0}
-		if {$newtop>=[expr $mw(nrecs)-1]} {set newtop [expr $mw(nrecs)-1]}
+		if {$newtop>=[expr $mw($wn,nrecs)-1]} {set newtop [expr $mw($wn,nrecs)-1]}
 	}
+} elseif {$par1=="moveto"} {
+	set newtop [expr int([lindex $args 0]*$mw($wn,nrecs))]
 } else {
-	set newtop [expr int($par2*$mw(nrecs))]
+	return
 }
 if {$newtop<0} return;
-if {$newtop>=[expr $mw(nrecs)-1]} return;
-set dy [expr [lindex $mw(rowy) $mw(toprec)]-[lindex $mw(rowy) $newtop]]
-.mw.c move q 0 $dy
-.mw.c move hgrid 0 $dy
+if {$newtop>=[expr $mw($wn,nrecs)-1]} return;
+set dy [expr [lindex $mw($wn,rowy) $mw($wn,toprec)]-[lindex $mw($wn,rowy) $newtop]]
+$wn.c move q 0 $dy
+$wn.c move hgrid 0 $dy
 set newrowy {}
-foreach y $mw(rowy) {lappend newrowy [expr $y+$dy]}
-set mw(rowy) $newrowy
-set mw(toprec) $newtop
-mw_set_scrollbar
-}
-
-proc {mw_select_records} {sql} {
-global dbc field mw pgsql
-global tablename msg pref
-set mw(newrec_fields) {}
-set mw(newrec_values) {}
-if {![mw_exit_edit]} return;
-.mw.c delete q
-.mw.c delete header
-.mw.c delete hgrid
-.mw.c delete new
-set mw(leftcol) 0
-set mw(leftoffset) 0
-set mw(crtrow) {}
-set msg {}
-set msg "Accessing data. Please wait ..."
+foreach y $mw($wn,rowy) {lappend newrowy [expr $y+$dy]}
+set mw($wn,rowy) $newrowy
+set mw($wn,toprec) $newtop
+mw_set_scrollbar $wn
+}
+
+proc {mw_select_records} {wn sql} {
+global dbc field mw pgsql pref
+set mw($wn,newrec_fields) {}
+set mw($wn,newrec_values) {}
+if {![mw_exit_edit $wn]} return;
+$wn.c delete q
+$wn.c delete header
+$wn.c delete hgrid
+$wn.c delete new
+set mw($wn,leftcol) 0
+set mw($wn,leftoffset) 0
+set mw($wn,crtrow) {}
+set mw($wn,msg) "Accessing data. Please wait ..."
+$wn.f1.b1 configure -state disabled
 cursor_clock
 set is_error 1
 if {[sql_exec noquiet "BEGIN"]} {
@@ -1412,145 +1531,167 @@ if {[sql_exec noquiet "BEGIN"]} {
 }
 if {$is_error} {
 	sql_exec quiet "END"
-	set msg {}
+	set mw($wn,msg) {}
+	$wn.f1.b1 configure -state normal
 	cursor_normal
-	set msg "Error executing : $sql"
+	set mw($wn,msg) "Error executing : $sql"
 	return
 }
-if {$mw(updatable)} then {set shift 1} else {set shift 0}
+if {$mw($wn,updatable)} then {set shift 1} else {set shift 0}
 #
 # checking at least the numer of fields
 set attrlist [pg_result $pgres -lAttributes]
-if {$mw(layout_found)} then {
-	if {  ($mw(colcount) != [expr [llength $attrlist]-$shift]) ||
-		  ($mw(colcount) != [llength $mw(colnames)]) ||
-		  ($mw(colcount) != [llength $mw(colwidth)]) } then {
+if {$mw($wn,layout_found)} then {
+	if {  ($mw($wn,colcount) != [expr [llength $attrlist]-$shift]) ||
+		  ($mw($wn,colcount) != [llength $mw($wn,colnames)]) ||
+		  ($mw($wn,colcount) != [llength $mw($wn,colwidth)]) } then {
 		# No. of columns don't match, something is wrong
 		# tk_messageBox -title Information -message "Layout info changed !\nRescanning..."
-		set mw(layout_found) 0
-		sql_exec quiet "delete from pga_layout where tablename='$mw(layout_name)'"
+		set mw($wn,layout_found) 0
+		sql_exec quiet "delete from pga_layout where tablename='$mw($wn,layout_name)'"
 	}
 }
 # Always take the col. names from the result
-set mw(colcount) [llength $attrlist]
-if {$mw(updatable)} then {incr mw(colcount) -1}
-set mw(colnames) {}
-# In defmw(colwidth) prepare mw(colwidth) (in case that not layout_found)
-set defmw(colwidth) {}
-for {set i 0} {$i<$mw(colcount)} {incr i} {
-	lappend mw(colnames) [lindex [lindex $attrlist [expr $i+$shift]] 0]
-	lappend defmw(colwidth) 150
-}
-if {!$mw(layout_found)} {
-	set mw(colwidth) $defmw(colwidth)
-	sql_exec quiet "insert into pga_layout values ('$mw(layout_name)',$mw(colcount),'$mw(colnames)','$mw(colwidth)')"
-	set mw(layout_found) 1
-}
-set mw(nrecs) [pg_result $pgres -numTuples]
-if {$mw(nrecs)>$pref(rows)} {
-	set msg "Only first $pref(rows) records from $mw(nrecs) have been loaded"
-	set mw(nrecs) $pref(rows)
+set mw($wn,colcount) [llength $attrlist]
+if {$mw($wn,updatable)} then {incr mw($wn,colcount) -1}
+set mw($wn,colnames) {}
+# In defmw($wn,colwidth) prepare mw($wn,colwidth) (in case that not layout_found)
+set defmw($wn,colwidth) {}
+for {set i 0} {$i<$mw($wn,colcount)} {incr i} {
+	lappend mw($wn,colnames) [lindex [lindex $attrlist [expr {$i+$shift}]] 0]
+	lappend defmw($wn,colwidth) 150
+}
+if {!$mw($wn,layout_found)} {
+	set mw($wn,colwidth) $defmw($wn,colwidth)
+	sql_exec quiet "insert into pga_layout values ('$mw($wn,layout_name)',$mw($wn,colcount),'$mw($wn,colnames)','$mw($wn,colwidth)')"
+	set mw($wn,layout_found) 1
+}
+set mw($wn,nrecs) [pg_result $pgres -numTuples]
+if {$mw($wn,nrecs)>$pref(rows)} {
+	set mw($wn,msg) "Only first $pref(rows) records from $mw($wn,nrecs) have been loaded"
+	set mw($wn,nrecs) $pref(rows)
 }
 set tagoid {}
 if {$pref(tvfont)=="helv"} {
-	set tvfont -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*
+	set tvfont $pref(font_normal)
 } else {
-	set tvfont -*-Clean-Medium-R-Normal-*-*-130-*-*-*-*-*
+	set tvfont $pref(font_fix)
 }
 # Computing column's left edge
 set posx 10
-for {set j 0} {$j<$mw(colcount)} {incr j} {
+for {set j 0} {$j<$mw($wn,colcount)} {incr j} {
 	set ledge($j) $posx
-	incr posx [expr [lindex $mw(colwidth) $j]+2]
-	set textwidth($j) [expr [lindex $mw(colwidth) $j]-5]
+	incr posx [expr {[lindex $mw($wn,colwidth) $j]+2}]
+	set textwidth($j) [expr {[lindex $mw($wn,colwidth) $j]-5}]
 }
 incr posx -6
 set posy 24
-mw_draw_headers
-set mw(updatekey) oid
-set mw(keylist) {}
-set mw(rowy) {24}
-set msg "Loading maximum $pref(rows) records ..."
-for {set i 0} {$i<$mw(nrecs)} {incr i} {
+mw_draw_headers $wn
+set mw($wn,updatekey) oid
+set mw($wn,keylist) {}
+set mw($wn,rowy) {24}
+set mw($wn,msg) "Loading maximum $pref(rows) records ..."
+set wupdatable $mw($wn,updatable)
+for {set i 0} {$i<$mw($wn,nrecs)} {incr i} {
 	set curtup [pg_result $pgres -getTuple $i]
-	if {$mw(updatable)} then {lappend mw(keylist) [lindex $curtup 0]}
-	for {set j 0} {$j<$mw(colcount)} {incr j} {
-		.mw.c create text $ledge($j) $posy -text [lindex $curtup [expr $j+$shift]] -tags [subst {r$i c$j q}] -anchor nw -font $tvfont -width $textwidth($j) -fill black
-	}
-	set bb [.mw.c bbox r$i]
-	incr posy [expr [lindex $bb 3]-[lindex $bb 1]]
-	lappend mw(rowy) $posy
-	.mw.c create line 0 [lindex $bb 3] $posx [lindex $bb 3] -fill gray -tags [subst {hgrid g$i}]
+	if {$wupdatable} then {lappend mw($wn,keylist) [lindex $curtup 0]}
+	for {set j 0} {$j<$mw($wn,colcount)} {incr j} {
+		$wn.c create text $ledge($j) $posy -text [lindex $curtup [expr {$j+$shift}]] -tags [subst {r$i c$j q}] -anchor nw -font $tvfont -width $textwidth($j) -fill black
+	}
+	set bb [$wn.c bbox r$i]
+	incr posy [expr {[lindex $bb 3]-[lindex $bb 1]}]
+	lappend mw($wn,rowy) $posy
+	$wn.c create line 0 [lindex $bb 3] $posx [lindex $bb 3] -fill gray -tags [subst {hgrid g$i}]
 	if {$i==25} {update; update idletasks}
 }
-after 3000 {set msg {} }
-set mw(last_rownum) $i
+after 3000 "set mw($wn,msg) {}"
+set mw($wn,last_rownum) $i
 # Defining position for input data
-mw_draw_new_record
+mw_draw_new_record $wn
 pg_result $pgres -clear
 sql_exec quiet "END"
-set mw(toprec) 0
-mw_set_scrollbar
-if {$mw(updatable)} then {
-	.mw.c bind q <Key> {mw_edit_text %A %K}
+set mw($wn,toprec) 0
+mw_set_scrollbar $wn
+if {$mw($wn,updatable)} then {
+	$wn.c bind q <Key> "mw_edit_text $wn %A %K"
 } else {
-	.mw.c bind q <Key> {}
+	$wn.c bind q <Key> {}
 }
-set mw(dirtyrec) 0
-#mw_draw_headers
-.mw.c raise header
+set mw($wn,dirtyrec) 0
+$wn.c raise header
+$wn.f1.b1 configure -state normal
 cursor_normal
 }
 
-proc {mw_set_scrollbar} {} {
+proc {mw_set_scrollbar} {wn} {
 global mw
-if {$mw(nrecs)==0} return;
-.mw.sb set [expr $mw(toprec)*1.0/$mw(nrecs)] [expr ($mw(toprec)+27.0)/$mw(nrecs)]
+if {$mw($wn,nrecs)==0} return;
+$wn.sb set [expr $mw($wn,toprec)*1.0/$mw($wn,nrecs)] [expr ($mw($wn,toprec)+27.0)/$mw($wn,nrecs)]
+}
+
+proc {mw_reload} {wn} {
+global mw
+set nq $mw($wn,query)
+if {($mw($wn,isaquery)) && ("$mw($wn,filter)$mw($wn,sortfield)"!="")} {
+	show_error "Sorting and filtering not (yet) available from queries!\n\nPlease enter them in the query definition!"
+	set mw($wn,sortfield) {}
+	set mw($wn,filter) {}
+} else {
+	if {$mw($wn,filter)!=""} {
+		set nq "$mw($wn,query) where ($mw($wn,filter))"
+	} else {
+		set nq $mw($wn,query)
+	}
+	if {$mw($wn,sortfield)!=""} {
+		set nq "$nq order by $mw($wn,sortfield)"
+	}
+}
+if {[mw_save_new_record $wn]} {mw_select_records $wn $nq}
 }
 
-proc {mw_show_record} {row} {
-global mw msg
-set mw(errorsavingnew) 0
-if {$mw(newrec_fields)!=""} {
-	if {$row!=$mw(last_rownum)} {
-		if {![mw_save_new_record]} {
-					set mw(errorsavingnew) 1
+proc {mw_show_record} {wn row} {
+global mw
+set mw($wn,errorsavingnew) 0
+if {$mw($wn,newrec_fields)!=""} {
+	if {$row!=$mw($wn,last_rownum)} {
+		if {![mw_save_new_record $wn]} {
+					set mw($wn,errorsavingnew) 1
 					return
 				}
 	}
 }
-set y1 [lindex $mw(rowy) $row]
-set y2 [lindex $mw(rowy) [expr $row+1]]
+set y1 [lindex $mw($wn,rowy) $row]
+set y2 [lindex $mw($wn,rowy) [expr $row+1]]
 if {$y2==""} {set y2 [expr $y1+14]}
-.mw.c dtag hili hili
-.mw.c addtag hili withtag r$row
+$wn.c dtag hili hili
+$wn.c addtag hili withtag r$row
 # Making a rectangle arround the record
 set x 3
-foreach wi $mw(colwidth) {incr x [expr $wi+2]}
-.mw.c delete crtrec
-.mw.c create rectangle [expr -1-$mw(leftoffset)] $y1 [expr $x-$mw(leftoffset)] $y2 -fill #EEEEEE -outline {} -tags {q crtrec}
-.mw.c lower crtrec
+foreach wi $mw($wn,colwidth) {incr x [expr $wi+2]}
+$wn.c delete crtrec
+$wn.c create rectangle [expr -1-$mw($wn,leftoffset)] $y1 [expr $x-$mw($wn,leftoffset)] $y2 -fill #EEEEEE -outline {} -tags {q crtrec}
+$wn.c lower crtrec
 }
 
-proc {mw_start_edit} {id x y} {
-global mw msg
-if {!$mw(updatable)} return
-set mw(id_edited) $id
-set mw(dirtyrec) 0
-set mw(text_initial_value) [.mw.c itemcget $id -text]
-focus .mw.c
-.mw.c focus $id
-.mw.c icursor $id @$x,$y
-if {$mw(row_edited)==$mw(nrecs)} {
-	if {[.mw.c itemcget $id -text]=="*"} {
-		.mw.c itemconfigure $id -text ""
-		.mw.c icursor $id 0
+proc {mw_start_edit} {wn id x y} {
+global mw
+if {!$mw($wn,updatable)} return
+set mw($wn,id_edited) $id
+set mw($wn,dirtyrec) 0
+set mw($wn,text_initial_value) [$wn.c itemcget $id -text]
+focus $wn.c
+$wn.c focus $id
+$wn.c icursor $id @$x,$y
+if {$mw($wn,row_edited)==$mw($wn,nrecs)} {
+	if {[$wn.c itemcget $id -text]=="*"} {
+		$wn.c itemconfigure $id -text ""
+		$wn.c icursor $id 0
 	}
 }
 }
 
 proc {open_database} {} {
-global dbc host pport dbname username password newusername newpassword sdbname newdbname newhost newpport pref
+global dbc host pport dbname username password newusername newpassword sdbname newdbname newhost newpport pref pgsql
 cursor_clock
 if {$newusername!=""} {
 	set connres [catch {set newdbc [pg_connect -conninfo "host=$newhost port=$newpport dbname=$newdbname user=$newusername password=$newpassword"]} msg]
@@ -1559,7 +1700,8 @@ if {$newusername!=""} {
 }
 if {$connres} {
 	cursor_normal
-	show_error "Error connecting database\n$msg"
+	show_error "Error trying to connect to database \"$newdbname\" on host $newhost\n\nPostgreSQL error message: $msg"
+	return $msg
 } else {
 	catch {pg_disconnect $dbc}
 	set dbc $newdbc
@@ -1578,18 +1720,23 @@ if {$connres} {
 	tab_click .dw.tabTables
 	# Check for pga_ tables
 	foreach {table structure} { pga_queries {queryname varchar(64),querytype char(1),querycommand text} pga_forms {formname varchar(64),formsource text} pga_scripts {scriptname varchar(64),scriptsource text} pga_reports {reportname varchar(64),reportsource text,reportbody text,reportprocs text,reportoptions text}} {
-	set pgres [wpg_exec $dbc "select relname from pg_class where relname='$table'"]
-		if {[pg_result $pgres -numTuples]==0} {
+		set pgres [wpg_exec $dbc "select relname from pg_class where relname='$table'"]
+		if {$pgsql(status)!="PGRES_TUPLES_OK"} {
+			show_error "FATAL ERROR searching for PgAccess system tables : $pgsql(errmsg)\nStatus:$pgsql(status)"
+			catch {pg_disconnect $dbc}
+			exit
+		} elseif {[pg_result $pgres -numTuples]==0} {
 			pg_result $pgres -clear
 			sql_exec quiet "create table $table ($structure)"
-		sql_exec quiet "grant ALL on $table to PUBLIC"
+			sql_exec quiet "grant ALL on $table to PUBLIC"
 		}
-		catch { pg_result $pgres -clear }
+		catch {pg_result $pgres -clear}
 	}
 	# searching for autoexec script
 	wpg_select $dbc "select * from pga_scripts where scriptname ~* '^autoexec$'" recd {
 		eval $recd(scriptsource)
-	}    
+	}
+	return ""
 }
 }
 
@@ -1633,7 +1780,7 @@ rb_preview
 }
 
 proc {open_query} {how} {
-global dbc queryname mw queryoid sortfield filter
+global dbc queryname mw queryoid
 
 if {[.dw.lb curselection]==""} return;
 set queryname [.dw.lb get [.dw.lb curselection]]
@@ -1657,13 +1804,14 @@ if {$how=="design"} {
 	.qb.text1 insert end $qcmd
 } else {
 	if {$qtype=="S"} then {
-		set mw(query) [subst $qcmd]
-		set mw(updatable) 0
-		set mw(isaquery) 1
-		Window show .mw
-		wm title .mw "Query result: $queryname"
-		mw_load_layout $queryname
-		mw_select_records $mw(query)
+		set wn [mw_get_new_name]
+		set mw($wn,query) [subst $qcmd]
+		set mw($wn,updatable) 0
+		set mw($wn,isaquery) 1
+		mw_create_window
+		wm title $wn "Query result: $queryname"
+		mw_load_layout $wn $queryname
+		mw_select_records $wn $mw($wn,query)
 	} else {
 		set answ [tk_messageBox -title Warning -type yesno -message "This query is an action query!\n\n[string range $qcmd 0 30] ...\n\nDo you want to execute it?"]
 		if {$answ} {
@@ -1675,11 +1823,29 @@ if {$how=="design"} {
 }
 }
 
+proc {mw_free_variables} {wn} {
+global mw
+	foreach varname [array names mw $wn,*] {
+		unset mw($varname)
+	}
+}
+
+proc {mw_get_new_name} {} {
+global mw mwcount
+incr mwcount
+set wn .mw$mwcount
+set mw($wn,dirtyrec) 0
+set mw($wn,id_edited) {}
+set mw($wn,filter) {}
+set mw($wn,sortfield) {}
+return .mw$mwcount
+}
+
 proc {open_sequence} {objname} {
 global dbc seq_name seq_inc seq_start seq_minval seq_maxval
 Window show .sqf
 set flag 1
-wpg_select $dbc "select * from $objname" rec {
+wpg_select $dbc "select * from \"$objname\"" rec {
 	set flag 0
 	set seq_name $objname
 	set seq_inc $rec(increment_by)
@@ -1701,29 +1867,57 @@ if {$flag} {
 }
 
 proc {open_table} {objname} {
-global mw sortfield filter tablename
+global mw sortfield filter
 set sortfield {}
 set filter {}
-Window show .mw
-set tablename $objname
-mw_load_layout $objname
-set mw(query) "select oid,\"$tablename\".* from \"$objname\""
-set mw(updatable) 1
-set mw(isaquery) 0
-mw_select_records $mw(query)
-wm title .mw "Table viewer : $objname"
+set wn [mw_get_new_name]
+mw_create_window
+set mw($wn,tablename) $objname
+mw_load_layout $wn $objname
+set mw($wn,query) "select oid,\"$objname\".* from \"$objname\""
+set mw($wn,updatable) 1
+set mw($wn,isaquery) 0
+mw_select_records $wn $mw($wn,query)
+catch {wm title $wn "Table viewer : $objname"}
 }
 
 proc {open_view} {} {
 global mw
 set vn [get_dwlb_Selection]
 if {$vn==""} return;
-Window show .mw
-set mw(query) "select * from $vn"
-set mw(isaquery) 0
-set mw(updatable) 0
-mw_load_layout $vn
-mw_select_records $mw(query)
+set wn [mw_get_new_name]
+mw_create_window
+set mw($wn,query) "select * from \"$vn\""
+set mw($wn,isaquery) 0
+set mw($wn,updatable) 0
+mw_load_layout $wn $vn
+mw_select_records $wn $mw($wn,query)
+}
+
+proc {rename_column} {} {
+global dbc tiw
+	if {[string length [string trim $tiw(new_cn)]]==0} {
+		show_error "Field name not entered!"
+		return
+	}
+	set old_name [string trim [string range $tiw(old_cn) 0 31]]
+	set tiw(new_cn) [string trim $tiw(new_cn)]
+	if {$old_name == $tiw(new_cn)} {
+		show_error "New name is the same as the old one !"
+		return
+	}
+	foreach line [.tiw.lb get 0 end] {
+		if {[string trim [string range $line 0 31]]==$tiw(new_cn)} {
+			show_error "Colum name \"$tiw(new_cn)\" already exists in this table!"
+			return
+		}
+	}
+	if {[sql_exec noquiet "alter table \"$tiw(tablename)\" rename column \"$old_name\" to \"$tiw(new_cn)\""]} {
+		set temp $tiw(col_id)
+		.tiw.lb delete $temp $temp
+		.tiw.lb insert $temp "[format %-32.32s $tiw(new_cn)] [string range $tiw(old_cn) 33 end]"
+		Window destroy .rcw
+	}
 }
 
 proc {parameter} {msg} {
@@ -1824,7 +2018,7 @@ set obj [.ql.c find withtag hili]
 if {$obj==""} return
 # Is object a link ?
 if {[ql_get_tag_info $obj link]=="s"} {
-	if {[tk_messageBox -title WARNING -icon question -message "Remove link ?" -type yesno -default no]=="no"} return
+	if {[tk_messageBox -title WARNING -icon question -parent .ql -message "Remove link ?" -type yesno -default no]=="no"} return
 	set linkid [ql_get_tag_info $obj lkid]
 	set qlvar(links) [lreplace $qlvar(links) $linkid $linkid]
 	.ql.c delete links
@@ -1835,7 +2029,7 @@ if {[ql_get_tag_info $obj link]=="s"} {
 if {[ql_get_tag_info $obj res]=="f"} {
 	set col [ql_get_tag_info $obj col]
 	if {$col==""} return
-	if {[tk_messageBox -title WARNING -icon question -message "Remove field from result ?" -type yesno -default no]=="no"} return
+	if {[tk_messageBox -title WARNING -icon question -parent .ql -message "Remove field from result ?" -type yesno -default no]=="no"} return
 	set qlvar(resfields) [lreplace $qlvar(resfields) $col $col]
 	set qlvar(restables) [lreplace $qlvar(restables) $col $col]
 	set qlvar(rescriteria) [lreplace $qlvar(rescriteria) $col $col]
@@ -1846,7 +2040,7 @@ if {[ql_get_tag_info $obj res]=="f"} {
 set tablealias [ql_get_tag_info $obj tab]
 set tablename $qlvar(ali_$tablealias)
 if {"$tablename"==""} return
-if {[tk_messageBox -title WARNING -icon question -message "Remove table $tablename from query ?" -type yesno -default no]=="no"} return
+if {[tk_messageBox -title WARNING -icon question -parent .ql -message "Remove table $tablename from query ?" -type yesno -default no]=="no"} return
 for {set i [expr [llength $qlvar(restables)]-1]} {$i>=0} {incr i -1} {
 	if {"$tablename"==[lindex $qlvar(restables) $i]} {
 	   set qlvar(resfields) [lreplace $qlvar(resfields) $i $i]
@@ -1926,7 +2120,7 @@ proc {ql_dragstop} {x y} {
 global draginfo qlvar
 # when click Close, ql window is destroyed but event ButtonRelease-1 is fired
 if {![winfo exists .ql]} return;
-.ql configure -cursor top_left_arrow
+.ql configure -cursor left_ptr
 set este {}
 catch {set este $draginfo(obj)}
 if {$este==""} return
@@ -2026,7 +2220,7 @@ foreach link $qlvar(links) {
 }
 
 proc {ql_draw_lizzard} {} {
-global qlvar
+global qlvar pref
 .ql.c delete all
 set posx 20
 for {set it 0} {$it<$qlvar(ntables)} {incr it} {
@@ -2044,10 +2238,10 @@ for {set i $qlvar(xoffs)} {$i<10000} {incr i $qlvar(reswidth)} {
 # Make a marker for result panel offset calculations (due to panning)
 .ql.c create line $qlvar(xoffs) $qlvar(yoffs) $qlvar(xoffs) 500 -tags {resmarker resgrid}
 .ql.c create rectangle 0 $qlvar(yoffs) $qlvar(xoffs) 5000 -fill #EEEEEE -tags {reshdr}
-.ql.c create text 5 [expr 1+$qlvar(yoffs)] -text Field: -anchor nw -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -tags {reshdr}
-.ql.c create text 5 [expr 16+$qlvar(yoffs)] -text Table: -anchor nw -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -tags {reshdr}
-.ql.c create text 5 [expr 31+$qlvar(yoffs)] -text Sort: -anchor nw -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -tags {reshdr}
-.ql.c create text 5 [expr 46+$qlvar(yoffs)] -text Criteria: -anchor nw -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -tags {reshdr}
+.ql.c create text 5 [expr 1+$qlvar(yoffs)] -text Field: -anchor nw -font $pref(font_normal) -tags {reshdr}
+.ql.c create text 5 [expr 16+$qlvar(yoffs)] -text Table: -anchor nw -font $pref(font_normal) -tags {reshdr}
+.ql.c create text 5 [expr 31+$qlvar(yoffs)] -text Sort: -anchor nw -font $pref(font_normal) -tags {reshdr}
+.ql.c create text 5 [expr 46+$qlvar(yoffs)] -text Criteria: -anchor nw -font $pref(font_normal) -tags {reshdr}
 .ql.c bind mov <Button-1> {ql_dragstart %W %x %y}
 .ql.c bind mov <B1-Motion> {ql_dragit %W %x %y}
 bind .ql <ButtonRelease-1> {ql_dragstop %x %y}
@@ -2057,16 +2251,16 @@ bind .ql <Key-Delete> {ql_delete_object}
 }
 
 proc {ql_draw_res_panel} {} {
-global qlvar
+global qlvar pref
 # Compute the offset of the result panel due to panning
 set resoffset [expr [lindex [.ql.c bbox resmarker] 0]-$qlvar(xoffs)]
 .ql.c delete resp
 for {set i 0} {$i<[llength $qlvar(resfields)]} {incr i} {
-	.ql.c create text [expr $resoffset+4+$qlvar(xoffs)+$i*$qlvar(reswidth)] [expr 1+$qlvar(yoffs)] -text [lindex $qlvar(resfields) $i] -anchor nw -tags [subst {resf resp col$i}] -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*
-	.ql.c create text [expr $resoffset+4+$qlvar(xoffs)+$i*$qlvar(reswidth)] [expr 16+$qlvar(yoffs)] -text $qlvar(ali_[lindex $qlvar(restables) $i]) -anchor nw -tags {resp rest} -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*
-	.ql.c create text [expr $resoffset+4+$qlvar(xoffs)+$i*$qlvar(reswidth)] [expr 31+$qlvar(yoffs)] -text [lindex $qlvar(ressort) $i] -anchor nw -tags {resp sort} -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*
+	.ql.c create text [expr $resoffset+4+$qlvar(xoffs)+$i*$qlvar(reswidth)] [expr 1+$qlvar(yoffs)] -text [lindex $qlvar(resfields) $i] -anchor nw -tags [subst {resf resp col$i}] -font $pref(font_normal)
+	.ql.c create text [expr $resoffset+4+$qlvar(xoffs)+$i*$qlvar(reswidth)] [expr 16+$qlvar(yoffs)] -text $qlvar(ali_[lindex $qlvar(restables) $i]) -anchor nw -tags {resp rest} -font $pref(font_normal)
+	.ql.c create text [expr $resoffset+4+$qlvar(xoffs)+$i*$qlvar(reswidth)] [expr 31+$qlvar(yoffs)] -text [lindex $qlvar(ressort) $i] -anchor nw -tags {resp sort} -font $pref(font_normal)
 	if {[lindex $qlvar(rescriteria) $i]!=""} {
-		.ql.c create text [expr $resoffset+4+$qlvar(xoffs)+$i*$qlvar(reswidth)]  [expr $qlvar(yoffs)+46+15*0] -anchor nw -text [lindex $qlvar(rescriteria) $i]  -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*  -tags [subst {resp cr-c$i-r0}]
+		.ql.c create text [expr $resoffset+4+$qlvar(xoffs)+$i*$qlvar(reswidth)]  [expr $qlvar(yoffs)+46+15*0] -anchor nw -text [lindex $qlvar(rescriteria) $i]  -font $pref(font_normal) -tags [subst {resp cr-c$i-r0}]
 	}
 }
 .ql.c raise reshdr
@@ -2075,17 +2269,17 @@ for {set i 0} {$i<[llength $qlvar(resfields)]} {incr i} {
 }
 
 proc {ql_draw_table} {it} {
-global qlvar
+global qlvar pref
 
 set posy 10
 set allbox [.ql.c bbox rect]
 if {$allbox==""} {set posx 10} else {set posx [expr 20+[lindex $allbox 2]]}
 set tablename $qlvar(tablename$it)
 set tablealias $qlvar(tablealias$it)
-.ql.c create text $posx $posy -text "$tablename" -anchor nw -tags [subst {tab$tablealias f-oid mov tableheader}] -font -Adobe-Helvetica-Bold-R-Normal-*-*-120-*-*-*-*-*
+.ql.c create text $posx $posy -text "$tablename" -anchor nw -tags [subst {tab$tablealias f-oid mov tableheader}] -font $pref(font_bold)
 incr posy 16
 foreach fld $qlvar(tablestruct$it) {
-   .ql.c create text $posx $posy -text $fld -fill #010101 -anchor nw -tags [subst {f-$fld tab$tablealias mov}] -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*
+   .ql.c create text $posx $posy -text $fld -fill #010101 -anchor nw -tags [subst {f-$fld tab$tablealias mov}] -font $pref(font_normal)
    incr posy 14
 }
 set reg [.ql.c bbox tab$tablealias]
@@ -2162,12 +2356,12 @@ if {[ql_get_tag_info $obj res]!="f"} return
 }
 
 proc {ql_show_sql} {} {
-global qlvar
+global qlvar pref
 
 set sqlcmd [ql_compute_sql]
 .ql.c delete sqlpage
 .ql.c create rectangle 0 0 2000 [expr $qlvar(yoffs)-1] -fill #ffffff -tags {sqlpage}
-.ql.c create text 10 10 -text $sqlcmd -anchor nw -width 550 -tags {sqlpage} -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*
+.ql.c create text 10 10 -text $sqlcmd -anchor nw -width 550 -tags {sqlpage} -font $pref(font_normal)
 .ql.c bind sqlpage <Button-1> {.ql.c delete sqlpage}
 }
 
@@ -2190,7 +2384,7 @@ set qlvar(ressort) [lreplace $qlvar(ressort) $col $col $cum]
 }
 
 proc {qlc_click} {x y w} {
-global qlvar
+global qlvar pref
 set qlvar(panstarted) 0
 if {$w==".ql.c"} {
 	set canpan 1
@@ -2214,7 +2408,7 @@ set resoffset [expr [lindex [.ql.c bbox resmarker] 0]-$qlvar(xoffs)]
 if {$isedit} {
 	set qlvar(rescriteria) [lreplace $qlvar(rescriteria) $qlvar(critcol) $qlvar(critcol) $qlvar(critval)]
 	.ql.c delete cr-c$qlvar(critcol)-r$qlvar(critrow)
-	.ql.c create text [expr $resoffset+4+$qlvar(xoffs)+$qlvar(critcol)*$qlvar(reswidth)] [expr $qlvar(yoffs)+46+15*$qlvar(critrow)] -anchor nw -text $qlvar(critval) -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -tags [subst {resp cr-c$qlvar(critcol)-r$qlvar(critrow)}]
+	.ql.c create text [expr $resoffset+4+$qlvar(xoffs)+$qlvar(critcol)*$qlvar(reswidth)] [expr $qlvar(yoffs)+46+15*$qlvar(critrow)] -anchor nw -text $qlvar(critval) -font $pref(font_normal) -tags [subst {resp cr-c$qlvar(critcol)-r$qlvar(critrow)}]
 	set qlvar(critedit) 0
 }
 catch {destroy .ql.entc}
@@ -2226,7 +2420,7 @@ set nx [expr $col*$qlvar(reswidth)+8+$qlvar(xoffs)+$resoffset]
 set ny [expr $qlvar(yoffs)+76]
 # Get the old criteria value
 set qlvar(critval) [lindex $qlvar(rescriteria) $col]
-entry .ql.entc -textvar qlvar(critval) -borderwidth 0 -background #FFFFFF -highlightthickness 0 -selectborderwidth 0  -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*
+entry .ql.entc -textvar qlvar(critval) -borderwidth 0 -background #FFFFFF -highlightthickness 0 -selectborderwidth 0  -font $pref(font_normal)
 place .ql.entc -x $nx -y $ny -height 14
 focus .ql.entc
 bind .ql.entc <Button-1> {set qlvar(panstarted) 0}
@@ -2236,18 +2430,18 @@ set qlvar(critedit) 1
 }
 
 proc {rb_add_field} {} {
-global rbvar
+global rbvar pref
 set fldname [.rb.lb get [.rb.lb curselection]]
-set newid [.rb.c create text $rbvar(xf_auto) [expr $rbvar(y_rpthdr)+5] -text $fldname -tags [subst {t_l mov ro}] -anchor nw -font -Adobe-Helvetica-Bold-R-Normal--*-120-*-*-*-*-*-*]
-.rb.c create text $rbvar(xf_auto) [expr $rbvar(y_pghdr)+5] -text $fldname -tags [subst {f-$fldname t_f rg_detail mov ro}] -anchor nw -font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-*
+set newid [.rb.c create text $rbvar(xf_auto) [expr $rbvar(y_rpthdr)+5] -text $fldname -tags [subst {t_l mov ro}] -anchor nw -font $pref(font_normal)]
+.rb.c create text $rbvar(xf_auto) [expr $rbvar(y_pghdr)+5] -text $fldname -tags [subst {f-$fldname t_f rg_detail mov ro}] -anchor nw -font $pref(font_normal)
 set bb [.rb.c bbox $newid]
 incr rbvar(xf_auto) [expr 5+[lindex $bb 2]-[lindex $bb 0]]
 }
 
 proc {rb_add_label} {} {
-global rbvar
+global rbvar pref
 set fldname $rbvar(labeltext)
-set newid [.rb.c create text $rbvar(xl_auto) [expr $rbvar(y_rpthdr)+5] -text $fldname -tags [subst {t_l mov ro}] -anchor nw -font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-*]
+set newid [.rb.c create text $rbvar(xl_auto) [expr $rbvar(y_rpthdr)+5] -text $fldname -tags [subst {t_l mov ro}] -anchor nw -font $pref(font_normal)]
 set bb [.rb.c bbox $newid]
 incr rbvar(xl_auto) [expr 5+[lindex $bb 2]-[lindex $bb 0]]
 }
@@ -2258,7 +2452,7 @@ global rbvar
 }
 
 proc {rb_delete_object} {} {
-if {[tk_messageBox -title Warning -message "Delete current report object?" -type yesno -default no]=="no"} return;
+if {[tk_messageBox -title Warning -parent .rb -message "Delete current report object?" -type yesno -default no]=="no"} return;
 .rb.c delete hili
 }
 
@@ -2331,7 +2525,7 @@ proc {rb_dragstop} {x y} {
 global draginfo rbvar
 # when click Close, ql window is destroyed but event ButtonRelease-1 is fired
 if {![winfo exists .rb]} return;
-.rb configure -cursor top_left_arrow
+.rb configure -cursor left_ptr
 set este {}
 catch {set este $draginfo(obj)}
 if {$este==""} return
@@ -2478,7 +2672,7 @@ wpg_select $dbc "select * from \"$rbvar(tablename)\"" rec {
 proc {rb_print_report} {} {
 set bb [.rpv.fr.c bbox all]
 .rpv.fr.c postscript -file "pgaccess-report.ps" -width [expr 10+[lindex $bb 2]-[lindex $bb 0]] -height [expr 10+[lindex $bb 3]-[lindex $bb 1]]
-tk_messageBox -title Information -message "The printed image in Postscript is in the file pgaccess-report.ps"
+tk_messageBox -title Information -parent .rb -message "The printed image in Postscript is in the file pgaccess-report.ps"
 }
 
 proc {rb_save_report} {} {
@@ -2502,13 +2696,13 @@ proc {save_pref} {} {
 global pref
 catch {
 	set fid [open "~/.pgaccessrc" w]
-	foreach {opt val} [array get pref] { puts $fid "$opt $val" }
+	foreach {opt val} [array get pref] { puts $fid "$opt {$val}" }
 	close $fid
 }
 }
 
 proc {show_error} {emsg} {
-   tk_messageBox -title Error -icon error -message $emsg
+   bell ; tk_messageBox -title Error -icon error -message $emsg
 }
 
 proc {show_table_information} {tblname} {
@@ -2563,21 +2757,21 @@ return 0
 }
 
 proc {tab_click} {w} {
-global dbc tablist activetab
+global dbc tablist activetab pref
 if {$dbc==""} return;
 set curtab [$w cget -text]
 #if {$activetab==$curtab} return;
 .dw.btndesign configure -state disabled
 if {$activetab!=""} {
 	place .dw.tab$activetab -x 10
-	.dw.tab$activetab configure -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*
+	.dw.tab$activetab configure -font $pref(font_normal)
 }
-$w configure -font -Adobe-Helvetica-Bold-R-Normal-*-*-120-*-*-*-*-*
+$w configure -font $pref(font_bold)
 place $w -x 7
 place .dw.lmask -x 80 -y [expr 86+25*[lsearch -exact $tablist $curtab]]
 set activetab $curtab
 # Tabs where button Design is enabled
-if {[lsearch {Scripts Queries Reports Forms} $activetab]!=-1} {
+if {[lsearch {Scripts Queries Reports Forms Users} $activetab]!=-1} {
 	.dw.btndesign configure -state normal
 }
 .dw.lb delete 0 end
@@ -2626,10 +2820,13 @@ set sdbname $dbname
 }
 
 proc {main} {argc argv} {
-global pref newdbname newpport newhost newusername newpassword dbc
-load libpgtcl.so
+global pref newdbname newpport newhost newusername newpassword dbc tcl_platform
+if {[string toupper $tcl_platform(platform)]=="WINDOWS"} {
+	load libpgtcl.dll
+} else {
+	load libpgtcl.so
+}
 catch {draw_tabs}
-load_pref
 set newusername {}
 set newpassword {}
 if {$argc>0} {
@@ -2642,7 +2839,14 @@ if {$argc>0} {
 	set newhost $pref(lasthost)
 	set newpport $pref(lastport)
 	catch {set newusername $pref(lastusername)}
-	open_database
+	if {[set openmsg [open_database]]!=""} {
+		if {[regexp "no password supplied" $openmsg]} {
+			Window show .dbod
+			focus .dbod.epassword
+			wm transient .dbod .dw
+		}
+	}
+	
 }
 wm protocol .dw WM_DELETE_WINDOW {
 	catch {pg_disconnect $dbc}
@@ -2679,17 +2883,10 @@ global vTcl
 	}
 }
 
-#################################
-# VTCL GENERATED GUI PROCEDURES
-#
-
 proc vTclWindow. {base} {
 	if {$base == ""} {
 		set base .
 	}
-	###################
-	# CREATING WIDGETS
-	###################
 	wm focusmodel $base passive
 	wm geometry $base 1x1+0+0
 	wm maxsize $base 1009 738
@@ -2698,9 +2895,6 @@ proc vTclWindow. {base} {
 	wm resizable $base 1 1
 	wm withdraw $base
 	wm title $base "vt.tcl"
-	###################
-	# SETTING GEOMETRY
-	###################
 }
 
 proc vTclWindow.about {base} {
@@ -2710,9 +2904,6 @@ proc vTclWindow.about {base} {
 	if {[winfo exists $base]} {
 		wm deiconify $base; return
 	}
-	###################
-	# CREATING WIDGETS
-	###################
 	toplevel $base -class Toplevel
 	wm focusmodel $base passive
 	wm geometry $base 471x177+168+243
@@ -2722,18 +2913,15 @@ proc vTclWindow.about {base} {
 	wm resizable $base 1 1
 	wm title $base "About"
 	label $base.l1  -borderwidth 3 -font -Adobe-Helvetica-Bold-R-Normal-*-*-180-*-*-*-*-*  -relief ridge -text PgAccess 
-	label $base.l2  -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*  -relief groove  -text {A Tcl/Tk interface to
+	label $base.l2  -relief groove  -text {A Tcl/Tk interface to
 PostgreSQL
 by Constantin Teodorescu} 
-	label $base.l3  -borderwidth 0  -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*  -relief sunken -text {vers 0.91}
-	label $base.l4  -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*  -relief groove  -text {You will always get the latest version at:
+	label $base.l3  -borderwidth 0 -relief sunken -text {v 0.93}
+	label $base.l4  -relief groove  -text {You will always get the latest version at:
 http://www.flex.ro/pgaccess
 
 Suggestions : teo@flex.ro} 
-	button $base.b1  -borderwidth 1 -command {Window destroy .about}  -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9  -pady 3 -text Ok 
-	###################
-	# SETTING GEOMETRY
-	###################
+	button $base.b1  -borderwidth 1 -command {Window destroy .about} -text Ok 
 	place $base.l1  -x 10 -y 10 -width 196 -height 103 -anchor nw -bordermode ignore 
 	place $base.l2  -x 10 -y 115 -width 198 -height 55 -anchor nw -bordermode ignore 
 	place $base.l3  -x 145 -y 80 -anchor nw -bordermode ignore 
@@ -2748,11 +2936,8 @@ proc vTclWindow.dbod {base} {
 	if {[winfo exists $base]} {
 		wm deiconify $base; return
 	}
-	###################
-	# CREATING WIDGETS
-	###################
 	toplevel $base -class Toplevel \
-		-cursor top_left_arrow 
+		-cursor left_ptr
 	wm focusmodel $base passive
 	wm geometry $base 282x180+358+333
 	wm maxsize $base 1009 738
@@ -2762,7 +2947,7 @@ proc vTclWindow.dbod {base} {
 	wm deiconify $base
 	wm title $base "Open database"
 	label $base.lhost \
-		-borderwidth 0 -relief raised -text Host 
+		-borderwidth 0 -text Host 
 	entry $base.ehost \
 		-background #fefefe -borderwidth 1 -highlightthickness 1 \
 		-selectborderwidth 0 -textvariable newhost 
@@ -2770,7 +2955,7 @@ proc vTclWindow.dbod {base} {
 		focus .dbod.epport
 	}
 	label $base.lport \
-		-borderwidth 0 -relief raised -text Port 
+		-borderwidth 0 -text Port 
 	entry $base.epport \
 		-background #fefefe -borderwidth 1 -highlightthickness 1 \
 		-selectborderwidth 0 -textvariable newpport 
@@ -2778,7 +2963,7 @@ proc vTclWindow.dbod {base} {
 		focus .dbod.edbname
 	}
 	label $base.ldbname \
-		-borderwidth 0 -relief raised -text Database 
+		-borderwidth 0 -text Database 
 	entry $base.edbname \
 		-background #fefefe -borderwidth 1 -highlightthickness 1 \
 		-selectborderwidth 0 -textvariable newdbname 
@@ -2787,7 +2972,7 @@ proc vTclWindow.dbod {base} {
 	.dbod.eusername selection range 0 end
 	}
 	label $base.lusername \
-		-borderwidth 0 -relief raised -text Username 
+		-borderwidth 0 -text Username 
 	entry $base.eusername \
 		-background #fefefe -borderwidth 1 -highlightthickness 1 \
 		-selectborderwidth 0 -textvariable newusername 
@@ -2795,7 +2980,7 @@ proc vTclWindow.dbod {base} {
 		focus .dbod.epassword
 	}
 	label $base.lpassword \
-		-borderwidth 0 -relief raised -text Password 
+		-borderwidth 0 -text Password 
 	entry $base.epassword \
 		-background #fefefe -borderwidth 1 -highlightthickness 1 \
 		-selectborderwidth 0 -textvariable newpassword -show "*"
@@ -2803,16 +2988,12 @@ proc vTclWindow.dbod {base} {
 		focus .dbod.opbtu
 	}
 	button $base.opbtu \
-		-borderwidth 1 -command open_database -padx 9 -pady 3 -text Open 
+		-borderwidth 1 -command open_database -text Open 
 	bind $base.opbtu <Key-Return> {
 		open_database
 	}
 	button $base.canbut \
-		-borderwidth 1 -command {Window hide .dbod} -padx 9 -pady 3 \
-		-text Cancel 
-	###################
-	# SETTING GEOMETRY
-	###################
+		-borderwidth 1 -command {Window hide .dbod} -text Cancel 
 	place $base.lhost \
 		-x 35 -y 7 -anchor nw -bordermode ignore 
 	place $base.ehost \
@@ -2840,17 +3021,15 @@ proc vTclWindow.dbod {base} {
 }
 
 proc vTclWindow.dw {base} {
+global pref
 	if {$base == ""} {
 		set base .dw
 	}
 	if {[winfo exists $base]} {
 		wm deiconify $base; return
 	}
-	###################
-	# CREATING WIDGETS
-	###################
 	toplevel $base -class Toplevel \
-		-background #efefef -cursor top_left_arrow 
+		-background #efefef -cursor left_ptr
 	wm focusmodel $base passive
 	wm geometry $base 322x355+96+172
 	wm maxsize $base 1009 738
@@ -2860,43 +3039,32 @@ proc vTclWindow.dw {base} {
 	wm deiconify $base
 	wm title $base "PostgreSQL access"
 	label $base.labframe \
-		-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \
 		-relief raised 
 	listbox $base.lb \
 		-background #fefefe \
-		-font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* \
 		-foreground black -highlightthickness 0 -selectborderwidth 0 \
 		-yscrollcommand {.dw.sb set} 
 	bind $base.lb <Double-Button-1> {
 		cmd_Open
 	}
 	button $base.btnnew \
-		-borderwidth 1 -command cmd_New \
-		-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 \
-		-pady 3 -text New 
+		-borderwidth 1 -command cmd_New -text New 
 	button $base.btnopen \
-		-borderwidth 1 -command cmd_Open \
-		-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 \
-		-pady 3 -text Open 
+		-borderwidth 1 -command cmd_Open -text Open 
 	button $base.btndesign \
-		-borderwidth 1 -command cmd_Design \
-		-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 \
-		-pady 3 -text Design 
+		-borderwidth 1 -command cmd_Design -text Design 
 	label $base.lmask \
 		-borderwidth 0 \
-		-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \
-		-relief raised -text {  } 
+		-text {  } 
 	label $base.label22 \
 		-borderwidth 1 \
-		-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \
 		-relief raised 
 	menubutton $base.menubutton23 \
-		-borderwidth 1 \
-		-font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* \
+		-borderwidth 1 -font $pref(font_normal) \
 		-menu .dw.menubutton23.01 -padx 4 -pady 3 -text Database 
 	menu $base.menubutton23.01 \
-		-borderwidth 1 -cursor {} \
-		-font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -tearoff 0 
+		-borderwidth 1 -font $pref(font_normal) \
+		-tearoff 0 
 	$base.menubutton23.01 add command \
 		\
 		-command {
@@ -2905,7 +3073,7 @@ set newhost $host
 set newpport $pport
 focus .dbod.edbname
 .dbod.edbname selection range 0 end} \
-		-label Open 
+		-label Open -font $pref(font_normal)
 	$base.menubutton23.01 add command \
 		\
 		-command {.dw.lb delete 0 end
@@ -2931,22 +3099,20 @@ set sdbname {}} \
 save_pref
 exit} -label Exit 
 	label $base.lshost \
-		-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \
 		-relief groove -text localhost -textvariable host 
 	label $base.lsdbname \
-		-anchor w -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \
+		-anchor w \
 		-relief groove -textvariable sdbname 
 	scrollbar $base.sb \
 		-borderwidth 1 -command {.dw.lb yview} -orient vert 
 	menubutton $base.mnob \
 		-borderwidth 1 \
-		-font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* \
-		-menu .dw.mnob.m -padx 4 -pady 3 -text Object 
+		-menu .dw.mnob.m -font $pref(font_normal) -text Object 
 	menu $base.mnob.m \
-		-borderwidth 1 -cursor {} \
-		-font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -tearoff 0 
+		-borderwidth 1 -font $pref(font_normal) \
+		-tearoff 0 
 	$base.mnob.m add command \
-		-command cmd_New -label New 
+		-command cmd_New -font $pref(font_normal) -label New 
 	$base.mnob.m add command \
 		-command {cmd_Delete } -label Delete 
 	$base.mnob.m add command \
@@ -2955,11 +3121,10 @@ exit} -label Exit
 		-command cmd_Information -label Information 
 	menubutton $base.mhelp \
 		-borderwidth 1 \
-		-font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* \
-		-menu .dw.mhelp.m -padx 4 -pady 3 -text Help 
+		-menu .dw.mhelp.m -font $pref(font_normal) -text Help 
 	menu $base.mhelp.m \
-		-borderwidth 1 -cursor {} \
-		-font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -tearoff 0 
+		-borderwidth 1 -font $pref(font_normal) \
+		-tearoff 0 
 	$base.mhelp.m add command \
 		-label Contents 
 	$base.mhelp.m add command \
@@ -2967,13 +3132,10 @@ exit} -label Exit
 	$base.mhelp.m add separator
 	$base.mhelp.m add command \
 		-command {Window show .about} -label About 
-	###################
-	# SETTING GEOMETRY
-	###################
 	place $base.labframe \
 		-x 80 -y 30 -width 236 -height 300 -anchor nw -bordermode ignore 
 	place $base.lb \
-		-x 90 -y 75 -width 205 -height 248 -anchor nw -bordermode ignore 
+		-x 90 -y 75 -width 205 -height 243 -anchor nw -bordermode ignore 
 	place $base.btnnew \
 		-x 90 -y 40 -width 60 -height 25 -anchor nw -bordermode ignore 
 	place $base.btnopen \
@@ -2991,7 +3153,7 @@ exit} -label Exit
 	place $base.lsdbname \
 		-x 95 -y 335 -width 223 -height 20 -anchor nw -bordermode ignore 
 	place $base.sb \
-		-x 295 -y 73 -width 18 -height 252 -anchor nw -bordermode ignore 
+		-x 295 -y 74 -width 18 -height 245 -anchor nw -bordermode ignore 
 	place $base.mnob \
 		-x 70 -y 2 -width 44 -height 19 -anchor nw -bordermode ignore 
 	place $base.mhelp \
@@ -3005,9 +3167,6 @@ proc vTclWindow.fw {base} {
 	if {[winfo exists $base]} {
 		wm deiconify $base; return
 	}
-	###################
-	# CREATING WIDGETS
-	###################
 	toplevel $base -class Toplevel
 	wm focusmodel $base passive
 	wm geometry $base 306x288+233+130
@@ -3016,11 +3175,11 @@ proc vTclWindow.fw {base} {
 	wm overrideredirect $base 0
 	wm resizable $base 0 0
 	wm title $base "Function"
-	label $base.l1  -borderwidth 0  -relief raised -text Name 
+	label $base.l1  -borderwidth 0 -text Name 
 	entry $base.e1  -background #fefefe -borderwidth 1 -highlightthickness 1  -selectborderwidth 0 -textvariable funcname 
-	label $base.l2  -borderwidth 0  -relief raised -text Parameters 
+	label $base.l2  -borderwidth 0 -text Parameters 
 	entry $base.e2  -background #fefefe -borderwidth 1 -highlightthickness 1  -selectborderwidth 0 -textvariable funcpar 
-	label $base.l3  -borderwidth 0  -relief raised -text Returns 
+	label $base.l3  -borderwidth 0 -text Returns 
 	entry $base.e3  -background #fefefe -borderwidth 1 -highlightthickness 1  -selectborderwidth 0 -textvariable funcret 
 	text $base.text1  -background #fefefe -borderwidth 1  -highlightthickness 1 -selectborderwidth 0 -wrap word 
 	button $base.okbtn  -borderwidth 1  -command {
@@ -3038,11 +3197,8 @@ proc vTclWindow.fw {base} {
 				}
 								
 			}
-		}  -padx 9  -pady 3 -state disabled -text Define 
-	button $base.cancelbtn  -borderwidth 1 -command {Window destroy .fw}  -padx 9  -pady 3 -text Close 
-	###################
-	# SETTING GEOMETRY
-	###################
+		}  -state disabled -text Define 
+	button $base.cancelbtn  -borderwidth 1 -command {Window destroy .fw} -text Close 
 	place $base.l1  -x 15 -y 18 -anchor nw -bordermode ignore 
 	place $base.e1  -x 95 -y 15 -width 198 -height 22 -anchor nw -bordermode ignore 
 	place $base.l2  -x 15 -y 48 -anchor nw -bordermode ignore 
@@ -3061,9 +3217,6 @@ proc vTclWindow.iew {base} {
 	if {[winfo exists $base]} {
 		wm deiconify $base; return
 	}
-	###################
-	# CREATING WIDGETS
-	###################
 	toplevel $base -class Toplevel
 	wm focusmodel $base passive
 	wm geometry $base 287x151+259+304
@@ -3072,11 +3225,11 @@ proc vTclWindow.iew {base} {
 	wm overrideredirect $base 0
 	wm resizable $base 0 0
 	wm title $base "Import-Export table"
-	label $base.l1  -borderwidth 0  -relief raised -text {Table name} 
+	label $base.l1  -borderwidth 0 -text {Table name} 
 	entry $base.e1  -background #fefefe -borderwidth 1 -textvariable ie_tablename 
-	label $base.l2  -borderwidth 0  -relief raised -text {File name} 
+	label $base.l2  -borderwidth 0 -text {File name} 
 	entry $base.e2  -background #fefefe -borderwidth 1 -textvariable ie_filename 
-	label $base.l3  -borderwidth 0  -relief raised -text {Field delimiter} 
+	label $base.l3  -borderwidth 0 -text {Field delimiter} 
 	entry $base.e3  -background #fefefe -borderwidth 1 -textvariable ie_delimiter 
 	button $base.expbtn  -borderwidth 1  -command {if {$ie_tablename==""} {
 	show_error "You have to supply a table name!"
@@ -3101,132 +3254,101 @@ proc vTclWindow.iew {base} {
 	set sqlcmd "COPY $ie_tablename $sup2 $oper '$ie_filename'$sup"
 	cursor_clock
 	if {[sql_exec noquiet $sqlcmd]} {
-		tk_messageBox -title Information -message "Operation completed!"
+		tk_messageBox -title Information -parent .iew -message "Operation completed!"
 		Window destroy .iew
 	}
 	cursor_normal
-}}  -padx 9  -pady 3 -text Export 
-	button $base.cancelbtn  -borderwidth 1 -command {Window destroy .iew}  -padx 9  -pady 3 -text Cancel 
+}}  -text Export 
+	button $base.cancelbtn  -borderwidth 1 -command {Window destroy .iew} -text Cancel 
 	checkbutton $base.oicb  -borderwidth 1  -text {with OIDs} -variable oicb 
-	###################
-	# SETTING GEOMETRY
-	###################
 	place $base.l1  -x 25 -y 15 -anchor nw -bordermode ignore 
-	place $base.e1  -x 115 -y 10 -anchor nw -bordermode ignore 
+	place $base.e1  -x 115 -y 10 -height 22 -anchor nw -bordermode ignore 
 	place $base.l2  -x 25 -y 45 -anchor nw -bordermode ignore 
-	place $base.e2  -x 115 -y 40 -anchor nw -bordermode ignore 
+	place $base.e2  -x 115 -y 40 -height 22 -anchor nw -bordermode ignore 
 	place $base.l3  -x 25 -y 75 -height 18 -anchor nw -bordermode ignore 
 	place $base.e3  -x 115 -y 74 -width 33 -height 22 -anchor nw -bordermode ignore 
-	place $base.expbtn  -x 60 -y 110 -anchor nw -bordermode ignore 
-	place $base.cancelbtn  -x 155 -y 110 -anchor nw -bordermode ignore 
+	place $base.expbtn  -x 60 -y 110 -height 25 -width 75 -anchor nw -bordermode ignore 
+	place $base.cancelbtn  -x 155 -y 110 -height 25 -width 75 -anchor nw -bordermode ignore 
 	place $base.oicb  -x 170 -y 75 -anchor nw -bordermode ignore
 }
 
-proc {mw_canvas_paste} {x y} {
+proc {mw_canvas_paste} {wn x y} {
 	   global mw
-	   .mw.c insert $mw(id_edited) insert [selection get]
-	   set mw(dirtyrec) 1
+	   $wn.c insert $mw($wn,id_edited) insert [selection get]
+	   set mw($wn,dirtyrec) 1
 }
 
-proc vTclWindow.mw {base} {
-	if {$base == ""} {
-		set base .mw
-	}
+proc {mw_create_window} {} {
+global mwcount
+	set base .mw$mwcount
+	set wn .mw$mwcount
 	if {[winfo exists $base]} {
 		wm deiconify $base; return
 	}
-	###################
-	# CREATING WIDGETS
-	###################
 	toplevel $base -class Toplevel
 	wm focusmodel $base passive
-	wm geometry $base 550x400+5+5
+	wm geometry $base 550x400
 	wm maxsize $base 1009 738
 	wm minsize $base 550 400
 	wm overrideredirect $base 0
 	wm resizable $base 1 1
 	wm deiconify $base
 	wm title $base "Table browser"
-	bind $base <Key-Delete> {
-		mw_delete_record
-	}
+	bind $base <Key-Delete> "mw_delete_record $wn"
 	frame $base.f1  -borderwidth 2 -height 75 -relief groove -width 125 
-	label $base.f1.l1  -borderwidth 0  -font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-*  -relief raised -text {Sort field} 
-	entry $base.f1.e1  -background #fefefe -borderwidth 1 -width 14  -highlightthickness 1 -textvariable sortfield
-	label $base.f1.lb1  -borderwidth 0 -relief raised -text {     } 
-	label $base.f1.l2  -background #dfdfdf -borderwidth 0  -font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-*  -relief raised -text {Filter conditions} 
-	entry $base.f1.e2  -background #fefefe -borderwidth 1  -highlightthickness 1 -textvariable filter
-	button $base.f1.b1  -borderwidth 1  -font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -padx 9  -pady 3 -text Close -command {
-if {[mw_save_new_record]} {
-	.mw.c delete rows
-	.mw.c delete header
+	label $base.f1.l1  -borderwidth 0 -text {Sort field} 
+	entry $base.f1.e1  -background #fefefe -borderwidth 1 -width 14  -highlightthickness 1 -textvariable mw($wn,sortfield)
+	bind $base.f1.e1 <Key-Return> "mw_reload $wn"	
+	bind $base.f1.e1 <Key-KP_Enter> "mw_reload $wn"	
+	label $base.f1.lb1  -borderwidth 0 -text {     } 
+	label $base.f1.l2  -borderwidth 0 -text {Filter conditions} 
+	entry $base.f1.e2  -background #fefefe -borderwidth 1  -highlightthickness 1 -textvariable mw($wn,filter)
+	bind $base.f1.e2 <Key-Return> "mw_reload $wn"	
+	bind $base.f1.e2 <Key-KP_Enter> "mw_reload $wn"	
+	button $base.f1.b1  -borderwidth 1 -text Close -command "
+if {\[mw_save_new_record $wn\]} {
+	$wn.c delete rows
+	$wn.c delete header
 	set sortfield {}
 	set filter {}
-	Window destroy .mw
+	Window destroy $wn
+	mw_free_variables $wn
 }
-	}
-	button $base.f1.b2  -borderwidth 1  -font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -padx 9  -pady 3 -text Reload -command {
-set nq $mw(query)
-if {($mw(isaquery)) && ("$filter$sortfield"!="")} {
-	show_error "Sorting and filtering not (yet) available from queries!\n\nPlease enter them in the query definition!"
-	set sortfield {}
-	set filter {}
-} else {
-	if {$filter!=""} {
-		set nq "$mw(query) where ($filter)"
-	} else {
-		set nq $mw(query)
-	}
-	if {$sortfield!=""} {
-		set nq "$nq order by $sortfield"
-	}
-}
-if {[mw_save_new_record]} {mw_select_records $nq}
-	}
+	"
+	button $base.f1.b2  -borderwidth 1 -text Reload -command "mw_reload $wn"
 	frame $base.frame20  -borderwidth 2 -height 75 -relief groove -width 125 
-	button $base.frame20.01  -borderwidth 1 -padx 9 -pady 3 -text < -command {mw_pan_right}
-	label $base.frame20.02  -anchor w -borderwidth 1  -font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -height 1  -relief sunken -text {} -textvariable msg 
-	button $base.frame20.03  -borderwidth 1 -padx 9 -pady 3 -text > -command {mw_pan_left}
+	button $base.frame20.01  -borderwidth 1 -text < -command "mw_pan_right $wn"
+	label $base.frame20.02  -anchor w -borderwidth 1 -height 1  -relief sunken -text {} -textvariable mw($wn,msg) 
+	button $base.frame20.03  -borderwidth 1 -text > -command "mw_pan_left $wn"
 	canvas $base.c  -background #fefefe -borderwidth 2 -height 207 -highlightthickness 0  -relief ridge -selectborderwidth 0 -takefocus 1 -width 295 
-	scrollbar $base.sb  -borderwidth 1 -orient vert -width 12  -command mw_scroll_window
-	bind $base.c <Button-1> {
-		mw_canvas_click %x %y
-	}
-	bind $base.c <Button-2> {
-		mw_canvas_paste %x %y
-	}
-	bind $base.c <Button-3> {
-		if {[mw_exit_edit]} {mw_save_new_record}
-	}
-	###################
-	# SETTING GEOMETRY
-	###################
-	pack $base.f1  -in .mw -anchor center -expand 0 -fill x -side top 
-	pack $base.f1.l1  -in .mw.f1 -anchor center -expand 0 -fill none -side left 
-	pack $base.f1.e1  -in .mw.f1 -anchor center -expand 0 -fill none -side left 
-	pack $base.f1.lb1  -in .mw.f1 -anchor center -expand 0 -fill none -side left 
-	pack $base.f1.l2  -in .mw.f1 -anchor center -expand 0 -fill none -side left 
-	pack $base.f1.e2  -in .mw.f1 -anchor center -expand 0 -fill none -side left 
-	pack $base.f1.b1  -in .mw.f1 -anchor center -expand 0 -fill none -side right 
-	pack $base.f1.b2  -in .mw.f1 -anchor center -expand 0 -fill none -side right 
-	pack $base.frame20  -in .mw -anchor s -expand 0 -fill x -side bottom 
-	pack $base.frame20.01  -in .mw.frame20 -anchor center -expand 0 -fill none -side left 
-	pack $base.frame20.02  -in .mw.frame20 -anchor center -expand 1 -fill x -side left 
-	pack $base.frame20.03  -in .mw.frame20 -anchor center -expand 0 -fill none -side right 
-	pack $base.c  -in .mw -anchor w -expand 1 -fill both -side left 
-	pack $base.sb  -in .mw -anchor e -expand 0 -fill y -side right
+	scrollbar $base.sb  -borderwidth 1 -orient vert -width 12  -command "mw_scroll_window $wn"
+	bind $base.c <Button-1> "mw_canvas_click $wn %x %y"
+	bind $base.c <Button-2> "mw_canvas_paste $wn %x %y"
+	bind $base.c <Button-3> "if {[mw_exit_edit $wn]} \"mw_save_new_record $wn\""
+	pack $base.f1  -in $wn -anchor center -expand 0 -fill x -side top 
+	pack $base.f1.l1  -in $wn.f1 -anchor center -expand 0 -fill none -side left 
+	pack $base.f1.e1  -in $wn.f1 -anchor center -expand 0 -fill none -side left 
+	pack $base.f1.lb1  -in $wn.f1 -anchor center -expand 0 -fill none -side left 
+	pack $base.f1.l2  -in $wn.f1 -anchor center -expand 0 -fill none -side left 
+	pack $base.f1.e2  -in $wn.f1 -anchor center -expand 0 -fill none -side left 
+	pack $base.f1.b1  -in $wn.f1 -anchor center -expand 0 -fill none -side right 
+	pack $base.f1.b2  -in $wn.f1 -anchor center -expand 0 -fill none -side right 
+	pack $base.frame20  -in $wn -anchor s -expand 0 -fill x -side bottom 
+	pack $base.frame20.01  -in $wn.frame20 -anchor center -expand 0 -fill none -side left 
+	pack $base.frame20.02  -in $wn.frame20 -anchor center -expand 1 -fill x -side left 
+	pack $base.frame20.03  -in $wn.frame20 -anchor center -expand 0 -fill none -side right 
+	pack $base.c -in $wn -anchor w -expand 1 -fill both -side left 
+	pack $base.sb -in $wn -anchor e -expand 0 -fill y -side right
 }
 
 proc vTclWindow.nt {base} {
+global pref
     if {$base == ""} {
         set base .nt
     }
     if {[winfo exists $base]} {
         wm deiconify $base; return
     }
-    ###################
-    # CREATING WIDGETS
-    ###################
     toplevel $base -class Toplevel
     wm focusmodel $base passive
     wm geometry $base 614x392+78+181
@@ -3243,9 +3365,7 @@ proc vTclWindow.nt {base} {
         focus .nt.einh
     }
     label $base.li \
-        -anchor w -borderwidth 0 \
-        -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \
-        -relief raised -text Inherits 
+        -anchor w -borderwidth 0 -text Inherits 
     entry $base.einh \
         -background #fefefe -borderwidth 1 -selectborderwidth 0 \
         -textvariable ntw(fathername) 
@@ -3257,7 +3377,7 @@ proc vTclWindow.nt {base} {
         -command {if {[winfo exists .nt.ddf]} {
 	destroy .nt.ddf
 } else {
-	create_drop_down .nt 378 25 220
+	create_drop_down .nt 386 23 220
 	focus .nt.ddf.sb
 	foreach tbl [get_tables] {.nt.ddf.lb insert end $tbl}
 	bind .nt.ddf.lb <ButtonRelease-1> {
@@ -3274,8 +3394,7 @@ proc vTclWindow.nt {base} {
 		break
 	}
 }} \
-        -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \
-        -highlightthickness 0 -padx 9 -pady 3 -takefocus 0 -text v 
+        -highlightthickness 0 -takefocus 0 -image dnarw
     entry $base.e2 \
         -background #fefefe -borderwidth 1 -selectborderwidth 0 \
         -textvariable ntw(fldname) 
@@ -3302,44 +3421,31 @@ proc vTclWindow.nt {base} {
     }
     checkbutton $base.cb1 \
         -borderwidth 1 \
-        -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \
         -offvalue { } -onvalue { NOT NULL} -text {field cannot be null} \
         -variable ntw(notnull) 
     label $base.lab1 \
-        -borderwidth 0 \
-        -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \
-        -relief raised -text type 
+        -borderwidth 0 -text type 
     label $base.lab2 \
-        -borderwidth 0 \
-        -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \
-        -relief raised -text {Field name} 
+        -borderwidth 0 -anchor w -text {Field name} 
     label $base.lab3 \
-        -borderwidth 0 \
-        -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \
-        -relief raised -text size 
+        -borderwidth 0 -text size 
     label $base.lab4 \
-        -borderwidth 0 \
-        -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \
-        -relief raised -text {Default value} 
+        -borderwidth 0 -anchor w -text {Default value} 
     button $base.addfld \
         -borderwidth 1 -command add_new_field \
-        -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 \
-        -pady 3 -text {Add field} 
+        -text {Add field} 
     button $base.delfld \
         -borderwidth 1 -command {catch {.nt.lb delete [.nt.lb curselection]}} \
-        -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 \
-        -pady 3 -text {Delete field} 
+        -text {Delete field} 
     button $base.emptb \
         -borderwidth 1 -command {.nt.lb delete 0 [.nt.lb size]} \
-        -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 \
-        -pady 3 -text {Delete all} 
+        -text {Delete all} 
     button $base.maketbl \
         -borderwidth 1 -command create_table \
-        -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 \
-        -pady 3 -text Create 
+        -text Create 
     listbox $base.lb \
         -background #fefefe -borderwidth 1 \
-        -font -*-Clean-Medium-R-Normal--*-130-*-*-*-*-*-* \
+        -font $pref(font_fix) \
         -selectborderwidth 0 -yscrollcommand {.nt.sb set} 
     bind $base.lb <ButtonRelease-1> {
         if {[.nt.lb curselection]!=""} {
@@ -3348,26 +3454,20 @@ proc vTclWindow.nt {base} {
     }
     button $base.exitbtn \
         -borderwidth 1 -command {Window destroy .nt} \
-        -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 \
-        -pady 3 -text Cancel 
+        -text Cancel 
     label $base.l1 \
         -anchor w -borderwidth 1 \
-        -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \
         -relief raised -text {       field name} 
     label $base.l2 \
         -borderwidth 1 \
-        -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \
         -relief raised -text type 
     label $base.l3 \
         -borderwidth 1 \
-        -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \
         -relief raised -text options 
     scrollbar $base.sb \
         -borderwidth 1 -command {.nt.lb yview} -orient vert 
     label $base.l93 \
-        -anchor w -borderwidth 0 \
-        -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \
-        -relief raised -text {Table name} 
+        -anchor w -borderwidth 0 -text {Table name} 
     button $base.mvup \
         -borderwidth 1 \
         -command {if {[.nt.lb size]>1} {
@@ -3378,8 +3478,7 @@ proc vTclWindow.nt {base} {
 		.nt.lb selection set [expr $i-1]
 	}
 }} \
-        -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 \
-        -pady 3 -text {Move up} 
+        -text {Move up} 
     button $base.mvdn \
         -borderwidth 1 \
         -command {if {[.nt.lb size]>1} {
@@ -3390,8 +3489,7 @@ proc vTclWindow.nt {base} {
 		.nt.lb selection set [expr $i+1]
 	}
 }} \
-        -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 \
-        -pady 3 -text {Move down} 
+        -text {Move down} 
     button $base.button17 \
         -borderwidth 1 \
         -command {
@@ -3409,47 +3507,36 @@ if {[winfo exists .nt.ddf]} {
 		break
 	}
 }} \
-        -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \
-        -highlightthickness 0 -padx 9 -pady 3 -takefocus 0 -text v 
+        -highlightthickness 0 -takefocus 0 -image dnarw 
     label $base.lco \
-        -borderwidth 0 \
-        -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \
-        -relief raised -text Constraint 
+        -borderwidth 0 -anchor w -text Constraint 
     entry $base.eco \
         -background #fefefe -borderwidth 1 -textvariable ntw(constraint) 
     label $base.lch \
-        -borderwidth 0 \
-        -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \
-        -relief raised -text check 
+        -borderwidth 0 -text check 
     entry $base.ech \
         -background #fefefe -borderwidth 1 -textvariable ntw(check) 
     label $base.ll \
         -borderwidth 1 \
-        -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \
         -relief raised 
     checkbutton $base.pk \
         -borderwidth 1 \
-        -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \
         -offvalue { } -onvalue * -text {primary key} -variable ntw(pk) 
     label $base.lpk \
         -borderwidth 1 \
-        -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \
         -relief raised -text K 
-    ###################
-    # SETTING GEOMETRY
-    ###################
     place $base.etabn \
         -x 85 -y 5 -width 156 -height 20 -anchor nw -bordermode ignore 
     place $base.li \
         -x 245 -y 7 -width 42 -height 16 -anchor nw -bordermode ignore 
     place $base.einh \
-        -x 290 -y 5 -width 292 -height 20 -anchor nw -bordermode ignore 
+        -x 290 -y 5 -width 318 -height 20 -anchor nw -bordermode ignore 
     place $base.binh \
-        -x 582 -y 6 -width 16 -height 19 -anchor nw -bordermode ignore 
+        -x 590 -y 7 -width 16 -height 16 -anchor nw -bordermode ignore 
     place $base.e2 \
         -x 85 -y 60 -width 156 -height 20 -anchor nw -bordermode ignore 
     place $base.e1 \
-        -x 291 -y 60 -width 81 -height 20 -anchor nw -bordermode ignore 
+        -x 291 -y 60 -width 98 -height 20 -anchor nw -bordermode ignore 
     place $base.e3 \
         -x 445 -y 60 -width 46 -height 20 -anchor nw -bordermode ignore 
     place $base.e5 \
@@ -3491,7 +3578,7 @@ if {[winfo exists .nt.ddf]} {
     place $base.mvdn \
         -x 534 -y 150 -width 75 -height 26 -anchor nw -bordermode ignore 
     place $base.button17 \
-        -x 372 -y 61 -width 16 -height 19 -anchor nw -bordermode ignore 
+        -x 371 -y 62 -width 16 -height 16 -anchor nw -bordermode ignore 
     place $base.lco \
         -x 5 -y 28 -width 58 -height 16 -anchor nw -bordermode ignore 
     place $base.eco \
@@ -3499,9 +3586,9 @@ if {[winfo exists .nt.ddf]} {
     place $base.lch \
         -x 245 -y 30 -anchor nw -bordermode ignore 
     place $base.ech \
-        -x 290 -y 27 -width 308 -height 22 -anchor nw -bordermode ignore 
+        -x 290 -y 27 -width 318 -height 22 -anchor nw -bordermode ignore 
     place $base.ll \
-        -x 5 -y 53 -width 591 -height 2 -anchor nw -bordermode ignore 
+        -x 5 -y 53 -width 603 -height 2 -anchor nw -bordermode ignore 
     place $base.pk \
         -x 407 -y 83 -width 93 -height 20 -anchor nw -bordermode ignore 
     place $base.lpk \
@@ -3509,59 +3596,71 @@ if {[winfo exists .nt.ddf]} {
 }
 
 proc vTclWindow.pw {base} {
+global pref
 	if {$base == ""} {
 		set base .pw
 	}
 	if {[winfo exists $base]} {
 		wm deiconify $base; return
 	}
-	###################
-	# CREATING WIDGETS
-	###################
 	toplevel $base -class Toplevel
 	wm focusmodel $base passive
-	wm geometry $base 322x167+210+219
+	wm geometry $base 322x227+210+219
 	wm maxsize $base 1009 738
 	wm minsize $base 1 1
 	wm overrideredirect $base 0
-	wm resizable $base 1 1
+	wm resizable $base 0 0
 	wm title $base "Preferences"
-	label $base.l1  -borderwidth 0 -relief raised -text {Max rows displayed in table/query view} 
+	label $base.l1  -borderwidth 0 -text {Max rows displayed in table/query view} 
 	entry $base.e1  -background #fefefe -borderwidth 1 -highlightthickness 1  -selectborderwidth 0 -textvariable pref(rows) 
-	label $base.l2  -borderwidth 0 -relief raised -text Font 
-	radiobutton $base.tvf  -borderwidth 1 -text {fixed (clean)} -value clean -variable pref(tvfont) 
-	radiobutton $base.tvfv  -borderwidth 1 -text {proportional (helvetica)} -value helv -variable pref(tvfont) 
+	label $base.l2  -borderwidth 0 -text "Table viewer font"
+	radiobutton $base.tvf  -borderwidth 1 -text {fixed width} -value clean -variable pref(tvfont)
+	radiobutton $base.tvfv  -borderwidth 1 -text proportional -value helv -variable pref(tvfont)
+	label $base.lfn -borderwidth 0 -anchor w -text "Font normal"
+	label $base.lfb -borderwidth 0 -anchor w -text "Font bold"
+	label $base.lfi -borderwidth 0 -anchor w -text "Font italic"
+	label $base.lff -borderwidth 0 -anchor w -text "Font fixed"
+	entry $base.efn -borderwidth 1 -highlightthickness 1  -selectborderwidth 0 -textvariable pref(font_normal)
+	entry $base.efb -borderwidth 1 -highlightthickness 1  -selectborderwidth 0 -textvariable pref(font_bold)
+	entry $base.efi -borderwidth 1 -highlightthickness 1  -selectborderwidth 0 -textvariable pref(font_italic)
+	entry $base.eff -borderwidth 1 -highlightthickness 1  -selectborderwidth 0 -textvariable pref(font_fix)
 	label $base.ll  -borderwidth 1 -relief sunken 
 	checkbutton $base.alcb  -borderwidth 1 -text {Auto-load the last opened database at startup}  -variable pref(autoload) 
-	button $base.okbtn  -borderwidth 1  -command {if {$pref(rows)>200} {
-tk_messageBox -title Warning -message "A big number of rows displayed in table view will take a lot of memory!"
+	button $base.okbtn  -borderwidth 1  -command {
+if {$pref(rows)>200} {
+	tk_messageBox -title Warning -parent .pw -message "A big number of rows displayed in table view will take a lot of memory!"
 }
 save_pref
-Window destroy .pw} -padx 9  -pady 3 -text Ok 
-	###################
-	# SETTING GEOMETRY
-	###################
-	place $base.l1  -x 10 -y 20 -anchor nw -bordermode ignore 
-	place $base.e1  -x 245 -y 17 -width 65 -height 24 -anchor nw -bordermode ignore 
-	place $base.l2  -x 10 -y 53 -anchor nw -bordermode ignore 
-	place $base.tvf  -x 50 -y 50 -anchor nw -bordermode ignore 
-	place $base.tvfv  -x 155 -y 50 -anchor nw -bordermode ignore 
-	place $base.ll  -x 10 -y 85 -width 301 -height 2 -anchor nw -bordermode ignore 
-	place $base.alcb  -x 10 -y 95 -anchor nw -bordermode ignore 
-	place $base.okbtn  -x 125 -y 135 -width 80 -height 26 -anchor nw -bordermode ignore
+Window destroy .pw
+tk_messageBox -title Warning -message "Changed fonts may appear in the next working session!"
+} -text Ok 
+	place $base.l1  -x 10 -y 10 -anchor nw -bordermode ignore 
+	place $base.e1  -x 240 -y 8 -width 65 -height 20 -anchor nw -bordermode ignore 
+	place $base.l2  -x 10 -y 38 -anchor nw -bordermode ignore 
+	place $base.tvf  -x 115 -y 34 -anchor nw -bordermode ignore 
+	place $base.tvfv  -x 205 -y 34 -anchor nw -bordermode ignore 
+	place $base.lfn -x 10 -y 65 -anchor nw
+	place $base.lfb -x 10 -y 86 -anchor nw
+	place $base.lfi -x 10 -y 107 -anchor nw
+	place $base.lff -x 10 -y 128 -anchor nw
+	place $base.efn -x 80 -y 63 -width 230 -height 20
+	place $base.efb -x 80 -y 84 -width 230 -height 20
+	place $base.efi -x 80 -y 105 -width 230 -height 20
+	place $base.eff -x 80 -y 126 -width 230 -height 20
+	place $base.ll  -x 10 -y 150 -width 301 -height 2 -anchor nw -bordermode ignore 
+	place $base.alcb  -x 10 -y 155 -anchor nw -bordermode ignore 
+	place $base.okbtn  -x 125 -y 195 -width 80 -height 26 -anchor nw -bordermode ignore
 }
 
 proc vTclWindow.qb {base} {
+global pref
 	if {$base == ""} {
 		set base .qb
 	}
 	if {[winfo exists $base]} {
 		wm deiconify $base; return
 	}
-	###################
-	# CREATING WIDGETS
-	###################
-	toplevel $base -class Toplevel  -cursor top_left_arrow 
+	toplevel $base -class Toplevel
 	wm focusmodel $base passive
 	wm geometry $base 442x344+150+150
 	wm maxsize $base 1009 738
@@ -3570,7 +3669,7 @@ proc vTclWindow.qb {base} {
 	wm resizable $base 0 0
 	wm deiconify $base
 	wm title $base "Query builder"
-	label $base.lqn  -borderwidth 0  -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*  -relief raised -text {Query name} 
+	label $base.lqn  -borderwidth 0 -text {Query name} 
 	entry $base.eqn  -background #fefefe -borderwidth 1 -foreground #000000  -highlightthickness 1 -selectborderwidth 0 -textvariable queryname 
 	button $base.savebtn  -borderwidth 1  -command {if {$queryname==""} then {
 	show_error "You have to supply a name for this query!"
@@ -3587,7 +3686,7 @@ proc vTclWindow.qb {base} {
 			set qtype A
 		}
 		if {$cbv} {
-			set pgres [wpg_exec $dbc "create view $queryname as $qcmd"]
+			set pgres [wpg_exec $dbc "create view \"$queryname\" as $qcmd"]
 			if {$pgsql(status)!="PGRES_COMMAND_OK"} {
 				show_error "Error defining view\n\n$pgsql(errmsg)"
 			} else {
@@ -3607,64 +3706,59 @@ proc vTclWindow.qb {base} {
 			if {$pgsql(status)!="PGRES_COMMAND_OK"} then {
 				show_error "Error executing query\n$pgres(errmsg)"
 			} else {
-				cmd_Queries
+				tab_click .dw.tabQueries
 				if {$queryoid==0} {set queryoid [pg_result $pgres -oid]}
 			}
 		}
 		catch {pg_result $pgres -clear}
 	}
-}}  -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9  -pady 3 -text {Save query definition} 
+}}  -text {Save query definition} 
 	button $base.execbtn  -borderwidth 1  -command {
 set qcmd [.qb.text1 get 0.0 end]
 regsub -all "\n" [string trim $qcmd] " " qcmd
 if {[lindex [split [string toupper $qcmd]] 0]!="SELECT"} {
-	if {[tk_messageBox -title Warning -message "This is an action query!\n\nExecute it?" -type yesno -default no]=="yes"} {
+	if {[tk_messageBox -title Warning -parent .qb -message "This is an action query!\n\nExecute it?" -type yesno -default no]=="yes"} {
 		sql_exec noquiet $qcmd
 	}
 } else {
-	set mw(query) [subst $qcmd]
-	set mw(updatable) 0
-	set mw(isaquery) 1
-	Window show .mw
-	set mw(layout_name) $queryname
-	mw_load_layout $queryname
-	mw_select_records $mw(query)
-}
-}  -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9  -pady 3 -text {Execute query} 
+	set wn [mw_get_new_name]
+	set mw($wn,query) [subst $qcmd]
+	set mw($wn,updatable) 0
+	set mw($wn,isaquery) 1
+	mw_create_window
+	mw_load_layout $wn $queryname
+	mw_select_records $wn $mw($wn,query)
+}
+} -text {Execute query} 
 	button $base.termbtn  -borderwidth 1  -command {.qb.cbv configure -state normal
 set cbv 0
 set queryname {}
 .qb.text1 delete 1.0 end
-Window destroy .qb}  -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9  -pady 3 -text Close 
-	text $base.text1  -background #fefefe -borderwidth 1  -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*  -foreground #000000 -highlightthickness 1 -wrap word 
-	checkbutton $base.cbv  -borderwidth 1  -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*  -text {Save this query as a view} -variable cbv 
+Window destroy .qb} -text Close 
+	text $base.text1  -background #fefefe -borderwidth 1  -font $pref(font_normal) -foreground #000000 -highlightthickness 1 -wrap word 
+	checkbutton $base.cbv  -borderwidth 1  -text {Save this query as a view} -variable cbv 
 	button $base.qlshow  -borderwidth 1  -command {Window show .ql
 ql_draw_lizzard
-focus .ql.entt}  -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9  -pady 3 -text {Visual designer} 
-	###################
-	# SETTING GEOMETRY
-	###################
+focus .ql.entt} -text {Visual designer} 
 	place $base.lqn  -x 5 -y 5 -anchor nw -bordermode ignore 
 	place $base.eqn  -x 80 -y 1 -width 355 -height 24 -anchor nw -bordermode ignore 
-	place $base.savebtn  -x 5 -y 60 -anchor nw -bordermode ignore 
-	place $base.execbtn  -x 150 -y 60 -anchor nw -bordermode ignore 
-	place $base.termbtn  -x 375 -y 60 -anchor nw -bordermode ignore 
+	place $base.savebtn  -x 5 -y 60 -height 25 -anchor nw -bordermode ignore 
+	place $base.execbtn  -x 150 -y 60 -height 25 -anchor nw -bordermode ignore 
+	place $base.termbtn  -x 375 -y 60 -width 50 -height 25 -anchor nw -bordermode ignore 
 	place $base.text1  -x 5 -y 90 -width 430 -height 246 -anchor nw -bordermode ignore 
-	place $base.cbv  -x 5 -y 30 -anchor nw -bordermode ignore 
-	place $base.qlshow  -x 255 -y 60 -anchor nw -bordermode ignore
+	place $base.cbv  -x 5 -y 30 -height 25 -anchor nw -bordermode ignore 
+	place $base.qlshow  -x 255 -y 60 -height 25 -anchor nw -bordermode ignore
 }
 
 proc vTclWindow.ql {base} {
+global pref
 	if {$base == ""} {
 		set base .ql
 	}
 	if {[winfo exists $base]} {
 		wm deiconify $base; return
 	}
-	###################
-	# CREATING WIDGETS
-	###################
-	toplevel $base -class Toplevel  -cursor top_left_arrow 
+	toplevel $base -class Toplevel
 	wm focusmodel $base passive
 	wm geometry $base 759x530+10+13
 	wm maxsize $base 1009 738
@@ -3688,26 +3782,26 @@ proc vTclWindow.ql {base} {
 	canvas $base.c  -background #fefefe -borderwidth 2 -height 207 -relief ridge  -takefocus 0 -width 295 
 	button $base.exitbtn  -borderwidth 1 -command {
 ql_init
-Window destroy .ql}  -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9  -pady 3 -text Close 
-	button $base.showbtn  -borderwidth 1 -command ql_show_sql  -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9  -pady 3 -text {Show SQL} 
-	label $base.l12  -borderwidth 0  -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*  -relief raised -text {Add table} 
+Window destroy .ql} -text Close 
+	button $base.showbtn  -borderwidth 1 -command ql_show_sql -text {Show SQL} 
+	label $base.l12  -borderwidth 0 -text {Add table} 
 	entry $base.entt  -background #fefefe -borderwidth 1 -highlightthickness 1  -selectborderwidth 0 -textvariable qlvar(newtablename) 
 	bind $base.entt <Key-Return> {
 		ql_add_new_table
 	}
 	button $base.execbtn  -borderwidth 1  -command {
 set qcmd [ql_compute_sql]
-set mw(layout_name) nolayoutneeded
-set mw(query) [subst $qcmd]
-set mw(updatable) 0
-set mw(isaquery) 1
-Window show .mw
-mw_load_layout $mw(layout_name)
-mw_select_records $mw(query)}  -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9  -pady 3 -text {Execute SQL} 
+set wn [mw_get_new_name]
+set mw($wn,query) [subst $qcmd]
+set mw($wn,updatable) 0
+set mw($wn,isaquery) 1
+mw_create_window
+mw_load_layout $wn nolayoutneeded
+mw_select_records $wn $mw($wn,query)} -text {Execute SQL} 
 	button $base.stoqb  -borderwidth 1  -command {Window show .qb
 .qb.text1 delete 1.0 end
 .qb.text1 insert end [ql_compute_sql]
-focus .qb}  -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9  -pady 3 -text {Save to query builder} 
+focus .qb} -text {Save to query builder} 
 	button $base.bdd  -borderwidth 1  -command {if {[winfo exists .ql.ddf]} {
 	destroy .ql.ddf
 } else {
@@ -3723,17 +3817,14 @@ focus .qb}  -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9  -p
 		destroy .ql.ddf
 		break
 	}
-}}  -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*  -highlightthickness 0 -padx 9 -pady 3 -text v 
-	###################
-	# SETTING GEOMETRY
-	###################
+}}  -image dnarw 
 	place $base.c  -x 5 -y 30 -width 748 -height 500 -anchor nw -bordermode ignore 
-	place $base.exitbtn  -x 695 -y 5 -height 26 -anchor nw -bordermode ignore 
-	place $base.showbtn  -x 367 -y 5 -height 26 -anchor nw -bordermode ignore 
+	place $base.exitbtn  -x 695 -y 5 -height 25 -anchor nw -bordermode ignore 
+	place $base.showbtn  -x 367 -y 5 -height 25 -anchor nw -bordermode ignore 
 	place $base.l12  -x 10 -y 8 -width 53 -height 16 -anchor nw -bordermode ignore 
 	place $base.entt  -x 70 -y 7 -width 126 -height 20 -anchor nw -bordermode ignore 
-	place $base.execbtn  -x 452 -y 5 -height 26 -anchor nw -bordermode ignore 
-	place $base.stoqb  -x 550 -y 5 -height 26 -anchor nw -bordermode ignore 
+	place $base.execbtn  -x 452 -y 5 -height 25 -anchor nw -bordermode ignore 
+	place $base.stoqb  -x 550 -y 5 -height 25 -anchor nw -bordermode ignore 
 	place $base.bdd  -x 200 -y 7 -width 17 -height 20 -anchor nw -bordermode ignore
 }
 
@@ -3745,9 +3836,6 @@ proc vTclWindow.rf {base} {
 	if {[winfo exists $base]} {
 		wm deiconify $base; return
 	}
-	###################
-	# CREATING WIDGETS
-	###################
 	toplevel $base -class Toplevel
 	wm focusmodel $base passive
 	wm geometry $base 272x105+294+262
@@ -3756,7 +3844,7 @@ proc vTclWindow.rf {base} {
 	wm overrideredirect $base 0
 	wm resizable $base 0 0
 	wm title $base "Rename"
-	label $base.l1  -borderwidth 0 -relief raised -text {New name} 
+	label $base.l1  -borderwidth 0 -text {New name} 
 	entry $base.e1  -background #fefefe -borderwidth 1 -textvariable newobjname 
 	button $base.b1  -borderwidth 1  -command {
 			if {$newobjname==""} {
@@ -3782,11 +3870,8 @@ proc vTclWindow.rf {base} {
 				}
 				catch {pg_result $pgres -clear}
 			}
-	   } -padx 9  -pady 3 -text Rename 
-	button $base.b2  -borderwidth 1 -command {Window destroy .rf} -padx 9  -pady 3 -text Cancel 
-	###################
-	# SETTING GEOMETRY
-	###################
+	   } -text Rename 
+	button $base.b2  -borderwidth 1 -command {Window destroy .rf} -text Cancel 
 	place $base.l1  -x 15 -y 28 -anchor nw -bordermode ignore 
 	place $base.e1  -x 100 -y 25 -anchor nw -bordermode ignore 
 	place $base.b1  -x 65 -y 65 -width 70 -anchor nw -bordermode ignore 
@@ -3794,15 +3879,13 @@ proc vTclWindow.rf {base} {
 }
 
 proc vTclWindow.rb {base} {
+global pref
 	if {$base == ""} {
 		set base .rb
 	}
 	if {[winfo exists $base]} {
 		wm deiconify $base; return
 	}
-	###################
-	# CREATING WIDGETS
-	###################
 	toplevel $base -class Toplevel
 	wm focusmodel $base passive
 	wm geometry $base 652x426+96+120
@@ -3814,11 +3897,9 @@ proc vTclWindow.rb {base} {
 	wm title $base "Report builder"
 	label $base.l1 \
 		-borderwidth 1 \
-		-font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* \
 		-relief raised -text {Report fields} 
 	listbox $base.lb \
 		-background #fefefe -borderwidth 1 \
-		-font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* \
 		-highlightthickness 1 -selectborderwidth 0 \
 		-yscrollcommand {.rb.sb set} 
 	bind $base.lb <ButtonRelease-1> {
@@ -3841,25 +3922,22 @@ proc vTclWindow.rb {base} {
 	}
 	button $base.bt2 \
 		-borderwidth 1 \
-		-command {if {[tk_messageBox -title Warning -message "All report information will be deleted.\n\nProceed ?" -type yesno -default no]=="yes"} then {
+		-command {if {[tk_messageBox -title Warning -parent .rb -message "All report information will be deleted.\n\nProceed ?" -type yesno -default no]=="yes"} then {
 .rb.c delete all
 rb_init
 rb_draw_regions
 }} \
-		-font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -padx 9 \
-		-pady 3 -text {Clear all} 
+		-text {Clear all} 
 	button $base.bt4 \
 		-borderwidth 1 -command rb_preview \
-		-font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -padx 9 \
-		-pady 3 -text Preview 
+		-text Preview 
 	button $base.bt5 \
 		-borderwidth 1 -command {Window destroy .rb} \
-		-font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -padx 9 \
-		-pady 3 -text Quit 
+		-text Quit 
 	scrollbar $base.sb \
 		-borderwidth 1 -command {.rb.lb yview} -orient vert 
 	label $base.lmsg \
-		-anchor w -font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* \
+		-anchor w \
 		-relief groove -text {Report header} -textvariable rbvar(msg) 
 	entry $base.e2 \
 		-background #fefefe -borderwidth 1 -highlightthickness 0 \
@@ -3872,8 +3950,7 @@ rb_draw_regions
 		-textvariable rbvar(labeltext) 
 	button $base.badl \
 		-borderwidth 1 -command rb_add_label \
-		-font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -padx 9 \
-		-pady 3 -text {Add label} 
+		-text {Add label} 
 	label $base.lbold \
 		-borderwidth 1 -relief raised -text B 
 	bind $base.lbold <Button-1> {
@@ -3886,7 +3963,7 @@ rb_change_object_font
 	}
 	label $base.lita \
 		-borderwidth 1 \
-		-font -Adobe-Helvetica-Medium-O-Normal--*-120-*-*-*-*-*-* \
+		-font $pref(font_italic) \
 		-relief raised -text i 
 	bind $base.lita <Button-1> {
 		if {[rb_get_italic]=="O"} {
@@ -3903,24 +3980,18 @@ rb_change_object_font
 		rb_change_object_font
 	}
 	label $base.linfo \
-		-anchor w -font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* \
+		-anchor w  \
 		-relief groove -text {Database field} -textvariable rbvar(info) 
 	label $base.llal \
-		-borderwidth 0 \
-		-font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* \
-		-relief raised -text Align 
+		-borderwidth 0 -text Align 
 	button $base.balign \
 		-borderwidth 0 -command rb_flip_align \
-		-font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -padx 9 \
-		-pady 3 -relief groove -text right 
+		-relief groove -text right 
 	button $base.savebtn \
 		-borderwidth 1 -command rb_save_report \
-		-font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -padx 9 \
-		-pady 3 -text Save 
+		-text Save 
 	label $base.lfn \
-		-borderwidth 0 \
-		-font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* \
-		-relief raised -text Font 
+		-borderwidth 0 -text Font 
 	button $base.bfont \
 		-borderwidth 0 \
 		-command {set temp [.rb.bfont cget -text]
@@ -3930,8 +4001,7 @@ if {$temp=="Courier"} then {
   .rb.bfont configure -text Courier
 }
 rb_change_object_font} \
-		-font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -padx 9 \
-		-pady 3 -relief groove -text Courier 
+		-relief groove -text Courier 
 	button $base.bdd \
 		-borderwidth 1 \
 		-command {if {[winfo exists .rb.ddf]} {
@@ -3948,12 +4018,9 @@ rb_change_object_font} \
 		break
 	}
 }} \
-		-font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* \
-		-highlightthickness 0 -padx 9 -pady 2 -text v 
+		-highlightthickness 0 -image dnarw 
 	label $base.lrn \
-		-borderwidth 0 \
-		-font -Adobe-Helvetica-medium-R-Normal--*-120-*-*-*-*-*-* \
-		-relief raised -text {Report name} 
+		-borderwidth 0 -text {Report name} 
 	entry $base.ern \
 		-background #fefefe -borderwidth 1 -highlightthickness 0 \
 		-textvariable rbvar(reportname) 
@@ -3961,9 +4028,7 @@ rb_change_object_font} \
 		rb_load_report
 	}
 	label $base.lrs \
-		-borderwidth 0 \
-		-font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* \
-		-relief raised -text {Report source} 
+		-borderwidth 0 -text {Report source} 
 	label $base.ls \
 		-borderwidth 1 -relief raised 
 	entry $base.ef \
@@ -3971,11 +4036,7 @@ rb_change_object_font} \
 		-textvariable rbvar(formula) 
 	button $base.baf \
 		-borderwidth 1 \
-		-font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -padx 9 \
-		-pady 3 -text {Add formula} 
-	###################
-	# SETTING GEOMETRY
-	###################
+		-text {Add formula} 
 	place $base.l1 \
 		-x 5 -y 55 -width 131 -height 18 -anchor nw -bordermode ignore 
 	place $base.lb \
@@ -4039,9 +4100,6 @@ proc vTclWindow.rpv {base} {
 	if {[winfo exists $base]} {
 		wm deiconify $base; return
 	}
-	###################
-	# CREATING WIDGETS
-	###################
 	toplevel $base -class Toplevel
 	wm focusmodel $base passive
 	wm geometry $base 495x500+230+50
@@ -4063,15 +4121,10 @@ proc vTclWindow.rpv {base} {
 		-borderwidth 2 -height 75 -width 125 
 	button $base.f1.button18 \
 		-borderwidth 1 -command {if {$rbvar(justpreview)} then {Window destroy .rb} ; Window destroy .rpv} \
-		-font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -padx 9 \
-		-pady 3 -text Close 
+		-text Close 
 	button $base.f1.button17 \
 		-borderwidth 1 -command rb_print_report \
-		-font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -padx 9 \
-		-pady 3 -text Print 
-	###################
-	# SETTING GEOMETRY
-	###################
+		-text Print 
 	pack $base.fr \
 		-in .rpv -anchor center -expand 1 -fill both -side top 
 	pack $base.fr.c \
@@ -4093,9 +4146,6 @@ proc vTclWindow.sqf {base} {
 	if {[winfo exists $base]} {
 		wm deiconify $base; return
 	}
-	###################
-	# CREATING WIDGETS
-	###################
 	toplevel $base -class Toplevel
 	wm focusmodel $base passive
 	wm geometry $base 310x223+245+158
@@ -4104,15 +4154,15 @@ proc vTclWindow.sqf {base} {
 	wm overrideredirect $base 0
 	wm resizable $base 0 0
 	wm title $base "Sequence"
-	label $base.l1  -anchor w -borderwidth 0 -relief raised -text {Sequence name} 
+	label $base.l1  -anchor w -borderwidth 0 -text {Sequence name} 
 	entry $base.e1  -borderwidth 1 -highlightthickness 1 -textvariable seq_name 
-	label $base.l2  -borderwidth 0 -relief raised -text Increment 
+	label $base.l2  -borderwidth 0 -text Increment 
 	entry $base.e2  -borderwidth 1 -highlightthickness 1 -selectborderwidth 0  -textvariable seq_inc 
-	label $base.l3  -borderwidth 0 -relief raised -text {Start value} 
+	label $base.l3  -borderwidth 0 -text {Start value} 
 	entry $base.e3  -borderwidth 1 -highlightthickness 1 -selectborderwidth 0  -textvariable seq_start 
-	label $base.l4  -borderwidth 0 -relief raised -text Minvalue 
+	label $base.l4  -borderwidth 0 -text Minvalue 
 	entry $base.e4  -borderwidth 1 -highlightthickness 1 -selectborderwidth 0  -textvariable seq_minval 
-	label $base.l5  -borderwidth 0 -relief raised -text Maxvalue 
+	label $base.l5  -borderwidth 0 -text Maxvalue 
 	entry $base.e5  -borderwidth 1 -highlightthickness 1 -selectborderwidth 0  -textvariable seq_maxval 
 	button $base.defbtn  -borderwidth 1  -command {
 		if {$seq_name==""} {
@@ -4123,13 +4173,13 @@ proc vTclWindow.sqf {base} {
 			if {$seq_start!=""} {set s2 "start $seq_start"};
 			if {$seq_minval!=""} {set s3 "minvalue $seq_minval"};
 			if {$seq_maxval!=""} {set s4 "maxvalue $seq_maxval"};
-			set sqlcmd "create sequence $seq_name $s1 $s2 $s3 $s4"
+			set sqlcmd "create sequence \"$seq_name\" $s1 $s2 $s3 $s4"
 			if {[sql_exec noquiet $sqlcmd]} {
 				cmd_Sequences
-				tk_messageBox -title Information -message "Sequence created!"
+				tk_messageBox -title Information -parent .sqf -message "Sequence created!"
 			}
 		}
-	}  -padx 9  -pady 3 -text {Define sequence} 
+	} -text {Define sequence} 
 	button $base.closebtn  -borderwidth 1  -command {for {set i 1} {$i<6} {incr i} {
 	.sqf.e$i configure -state normal
 	.sqf.e$i delete 0 end
@@ -4138,10 +4188,7 @@ proc vTclWindow.sqf {base} {
 }
 place .sqf.defbtn -x 40 -y 175
 Window destroy .sqf
-} -padx 9  -pady 3 -text Close 
-	###################
-	# SETTING GEOMETRY
-	###################
+} -text Close 
 	place $base.l1  -x 20 -y 20 -width 111 -height 18 -anchor nw -bordermode ignore 
 	place $base.e1  -x 135 -y 19 -anchor nw -bordermode ignore 
 	place $base.l2  -x 20 -y 50 -anchor nw -bordermode ignore 
@@ -4157,15 +4204,13 @@ Window destroy .sqf
 }
 
 proc vTclWindow.sw {base} {
+global pref
 	if {$base == ""} {
 		set base .sw
 	}
 	if {[winfo exists $base]} {
 		wm deiconify $base; return
 	}
-	###################
-	# CREATING WIDGETS
-	###################
 	toplevel $base -class Toplevel
 	wm focusmodel $base passive
 	wm geometry $base 594x416+192+152
@@ -4175,23 +4220,20 @@ proc vTclWindow.sw {base} {
 	wm resizable $base 1 1
 	wm title $base "Design script"
 	frame $base.f1  -height 55 -relief groove -width 125 
-	label $base.f1.l1  -borderwidth 0  -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*  -relief raised -text {Script name} 
+	label $base.f1.l1  -borderwidth 0 -text {Script name} 
 	entry $base.f1.e1  -background #fefefe -borderwidth 1 -highlightthickness 0  -textvariable scriptname -width 32 
-	text $base.src  -background #fefefe  -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -height 2  -highlightthickness 1 -selectborderwidth 0 -width 2 
+	text $base.src  -background #fefefe  -font $pref(font_normal) -height 2  -highlightthickness 1 -selectborderwidth 0 -width 2 
 	frame $base.f2  -height 75 -relief groove -width 125 
-	button $base.f2.b1  -borderwidth 1 -command {Window destroy .sw}  -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9  -pady 3 -text Cancel 
+	button $base.f2.b1  -borderwidth 1 -command {Window destroy .sw} -text Cancel 
 	button $base.f2.b2  -borderwidth 1  -command {if {$scriptname==""} {
-	tk_messageBox -title Warning -message "The script must have a name!"
+	tk_messageBox -title Warning -parent .sw -message "The script must have a name!"
 } else {
    sql_exec noquiet "delete from pga_scripts where scriptname='$scriptname'"
    regsub -all {\\} [.sw.src get 1.0 end] {\\\\} scriptsource
    regsub -all ' $scriptsource  \\' scriptsource
    sql_exec noquiet "insert into pga_scripts values ('$scriptname','$scriptsource')"
    cmd_Scripts
-}}  -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9  -pady 3 -text Save -width 6 
-	###################
-	# SETTING GEOMETRY
-	###################
+}}  -text Save -width 6 
 	pack $base.f1  -in .sw -anchor center -expand 0 -fill x -pady 2 -side top 
 	pack $base.f1.l1  -in .sw.f1 -anchor center -expand 0 -fill none -ipadx 2 -side left 
 	pack $base.f1.e1  -in .sw.f1 -anchor center -expand 0 -fill none -side left 
@@ -4202,65 +4244,65 @@ proc vTclWindow.sw {base} {
 }
 
 proc vTclWindow.tiw {base} {
+global pref
 	if {$base == ""} {
 		set base .tiw
 	}
 	if {[winfo exists $base]} {
 		wm deiconify $base; return
 	}
-	###################
-	# CREATING WIDGETS
-	###################
 	toplevel $base -class Toplevel
 	wm focusmodel $base passive
 	wm geometry $base 390x460+243+20
 	wm maxsize $base 1009 738
 	wm minsize $base 1 1
 	wm overrideredirect $base 0
-	wm resizable $base 1 1
+	wm resizable $base 0 0
 	wm title $base "Table information"
-	label $base.l1  -borderwidth 0  -relief raised -text {Table name} 
-	label $base.l2  -anchor w -borderwidth 0  -relief raised -text conturi -textvariable tiw(tablename) 
-	label $base.l3  -borderwidth 0  -relief raised -text Owner 
+	label $base.l1  -borderwidth 0 -text {Table name} 
+	label $base.l2  -anchor w -borderwidth 0 -text conturi -textvariable tiw(tablename) 
+	label $base.l3  -borderwidth 0 -text Owner 
 	label $base.l4  -anchor w -borderwidth 1  -textvariable tiw(owner) 
-	listbox $base.lb  -background #fefefe -borderwidth 1  -font -*-Clean-Medium-R-Normal--*-130-*-*-*-*-*-*  -highlightthickness 1 -selectborderwidth 0  -yscrollcommand {.tiw.sb set} 
+	listbox $base.lb  -background #fefefe -borderwidth 1  -font $pref(font_fix)  -highlightthickness 1 -selectborderwidth 0  -yscrollcommand {.tiw.sb set} 
 	scrollbar $base.sb  -activebackground #d9d9d9 -activerelief sunken -borderwidth 1  -command {.tiw.lb yview} -orient vert 
-	button $base.closebtn  -borderwidth 1 -command {Window destroy .tiw}  -pady 3 -text Close 
-	label $base.l10  -borderwidth 1  -relief raised -text {field name} 
-	label $base.l11  -borderwidth 1  -relief raised -text {field type} 
-	label $base.l12  -borderwidth 1  -relief raised -text size 
-	label $base.lfi  -borderwidth 0  -relief raised -text {Field information} 
-	label $base.lii  -borderwidth 1  -relief raised -text {Indexes defined} 
+	button $base.closebtn  -borderwidth 1 -command {Window destroy .tiw}  -pady 3 -text Close
+	button $base.renbtn -borderwidth 1 -command {
+	if {[set tiw(col_id) [.tiw.lb curselection]]==""} then {bell} else {set tiw(old_cn) [.tiw.lb get [.tiw.lb curselection]] ; set tiw(new_cn) {} ; Window show .rcw ; tkwait visibility .rcw ; wm transient .rcw .tiw ; focus .rcw.e1}} -text {Rename field}
+	button $base.addbtn -borderwidth 1 -command "Window show .anfw ; set anfw(name) {} ; set anfw(type) {} ; wm transient .anfw .tiw ; focus .anfw.e1" -text "Add new field"
+	label $base.l10  -borderwidth 1  -relief raised -text {field name}
+	label $base.l11  -borderwidth 1  -relief raised -text {field type}
+	label $base.l12  -borderwidth 1  -relief raised -text size
+	label $base.lfi  -borderwidth 0 -text {Field information}
+	label $base.lii  -borderwidth 1  -relief raised -text {Indexes defined}
 	listbox $base.ilb  -background #fefefe -borderwidth 1  -highlightthickness 1 -selectborderwidth 0 
 	bind $base.ilb <ButtonRelease-1> {
 		tiw_show_index
 	}
-	label $base.lip  -borderwidth 1  -relief raised -text {index properties} 
-	frame $base.fr11  -borderwidth 1 -height 75 -relief sunken -width 125 
-	label $base.fr11.l9  -borderwidth 0  -relief raised -text {Is clustered ?} 
-	label $base.fr11.l2  -borderwidth 0  -relief raised -text {Is unique ?} 
-	label $base.fr11.liu  -anchor nw -borderwidth 0  -relief raised -text Yes -textvariable tiw(isunique) 
-	label $base.fr11.lic  -anchor nw -borderwidth 0  -relief raised -text No -textvariable tiw(isclustered) 
-	label $base.fr11.l5  -borderwidth 0  -relief raised -text {Fields :} 
+	label $base.lip  -borderwidth 1  -relief raised -text {index properties}
+	frame $base.fr11  -borderwidth 1 -height 75 -relief sunken -width 125
+	label $base.fr11.l9  -borderwidth 0 -text {Is clustered ?} 
+	label $base.fr11.l2  -borderwidth 0 -text {Is unique ?} 
+	label $base.fr11.liu  -anchor nw -borderwidth 0 -text Yes -textvariable tiw(isunique) 
+	label $base.fr11.lic  -anchor nw -borderwidth 0 -text No -textvariable tiw(isclustered) 
+	label $base.fr11.l5  -borderwidth 0 -text {Fields :} 
 	label $base.fr11.lif  -anchor nw -borderwidth 1  -justify left -relief sunken -text cont  -textvariable tiw(indexfields) -wraplength 170 
-	###################
-	# SETTING GEOMETRY
-	###################
 	place $base.l1  -x 20 -y 15 -anchor nw -bordermode ignore 
 	place $base.l2  -x 100 -y 14 -width 161 -height 18 -anchor nw -bordermode ignore 
 	place $base.l3  -x 20 -y 35 -anchor nw -bordermode ignore 
 	place $base.l4  -x 100 -y 34 -width 226 -height 18 -anchor nw -bordermode ignore 
 	place $base.lb  -x 20 -y 91 -width 338 -height 171 -anchor nw -bordermode ignore 
+	place $base.renbtn -x 20 -y 263 -height 25
+	place $base.addbtn -x 120 -y 263 -height 25
 	place $base.sb  -x 355 -y 90 -width 18 -height 173 -anchor nw -bordermode ignore 
-	place $base.closebtn  -x 325 -y 5 -anchor nw -bordermode ignore 
+	place $base.closebtn  -x 325 -y 5 -height 25 -anchor nw -bordermode ignore 
 	place $base.l10  -x 21 -y 75 -width 204 -height 18 -anchor nw -bordermode ignore 
 	place $base.l11  -x 225 -y 75 -width 90 -height 18 -anchor nw -bordermode ignore 
 	place $base.l12  -x 315 -y 75 -width 41 -height 18 -anchor nw -bordermode ignore 
 	place $base.lfi  -x 20 -y 55 -anchor nw -bordermode ignore 
-	place $base.lii  -x 20 -y 280 -width 151 -height 18 -anchor nw -bordermode ignore 
-	place $base.ilb  -x 20 -y 296 -width 150 -height 148 -anchor nw -bordermode ignore 
-	place $base.lip  -x 171 -y 280 -width 198 -height 18 -anchor nw -bordermode ignore 
-	place $base.fr11  -x 170 -y 297 -width 199 -height 147 -anchor nw -bordermode ignore 
+	place $base.lii  -x 20 -y 290 -width 151 -height 18 -anchor nw -bordermode ignore 
+	place $base.ilb  -x 20 -y 306 -width 150 -height 148 -anchor nw -bordermode ignore 
+	place $base.lip  -x 171 -y 290 -width 198 -height 18 -anchor nw -bordermode ignore 
+	place $base.fr11  -x 170 -y 307 -width 199 -height 147 -anchor nw -bordermode ignore 
 	place $base.fr11.l9  -x 10 -y 30 -anchor nw -bordermode ignore 
 	place $base.fr11.l2  -x 10 -y 10 -anchor nw -bordermode ignore 
 	place $base.fr11.liu  -x 95 -y 10 -width 27 -height 16 -anchor nw -bordermode ignore 
@@ -4276,9 +4318,6 @@ proc vTclWindow.fd {base} {
 	if {[winfo exists $base]} {
 		wm deiconify $base; return
 	}
-	###################
-	# CREATING WIDGETS
-	###################
 	toplevel $base -class Toplevel
 	wm focusmodel $base passive
 	wm geometry $base 377x315+103+101
@@ -4303,9 +4342,6 @@ proc vTclWindow.fd {base} {
 	bind $base.c <Motion> {
 		fd_mouse_move %x %y
 	}
-	###################
-	# SETTING GEOMETRY
-	###################
 	pack $base.c \
 		-in .fd -anchor center -expand 1 -fill both -side top 
 }
@@ -4317,9 +4353,6 @@ proc vTclWindow.fda {base} {
 	if {[winfo exists $base]} {
 		wm deiconify $base; return
 	}
-	###################
-	# CREATING WIDGETS
-	###################
 	toplevel $base -class Toplevel
 	wm focusmodel $base passive
 	wm geometry $base 225x197+561+0
@@ -4331,7 +4364,6 @@ proc vTclWindow.fda {base} {
 	wm title $base "Attributes"
 	label $base.l1 \
 		-anchor nw -borderwidth 0 \
-		-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \
 		-justify left -text Name -width 8 
 	entry $base.e1 \
 		-background #fefefe -borderwidth 1 -highlightthickness 0 \
@@ -4341,7 +4373,6 @@ proc vTclWindow.fda {base} {
 	}
 	label $base.l2 \
 		-anchor nw -borderwidth 0 \
-		-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \
 		-justify left -text Top -width 8 
 	entry $base.e2 \
 		-background #fefefe -borderwidth 1 -highlightthickness 0 \
@@ -4351,8 +4382,7 @@ proc vTclWindow.fda {base} {
 	}
 	label $base.l3 \
 		-anchor w -borderwidth 0 \
-		-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -text Left \
-		-width 8 
+		-text Left -width 8 
 	entry $base.e3 \
 		-background #fefefe -borderwidth 1 -highlightthickness 0 \
 		-selectborderwidth 0 -textvariable fdvar(c_left) 
@@ -4361,7 +4391,7 @@ proc vTclWindow.fda {base} {
 	}
 	label $base.l4 \
 		-anchor w -borderwidth 0 \
-		-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -text Width \
+		-text Width \
 		-width 8 
 	entry $base.e4 \
 		-background #fefefe -borderwidth 1 -highlightthickness 0 \
@@ -4370,9 +4400,7 @@ proc vTclWindow.fda {base} {
 		fd_change_coord
 	}
 	label $base.l5 \
-		-anchor w -borderwidth 0 \
-		-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 0 \
-		-text Height -width 8 
+		-anchor w -borderwidth 0 -padx 0 -text Height -width 8 
 	entry $base.e5 \
 		-background #fefefe -borderwidth 1 -highlightthickness 0 \
 		-selectborderwidth 0 -textvariable fdvar(c_height) 
@@ -4380,9 +4408,7 @@ proc vTclWindow.fda {base} {
 		fd_change_coord
 	}
 	label $base.l6 \
-		-borderwidth 0 \
-		-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 0 \
-		-text Command 
+		-borderwidth 0 -text Command 
 	entry $base.e6 \
 		-background #fefefe -borderwidth 1 -highlightthickness 0 \
 		-selectborderwidth 0 -textvariable fdvar(c_cmd) 
@@ -4394,11 +4420,9 @@ proc vTclWindow.fda {base} {
 		-command {Window show .fdcmd
 .fdcmd.f.txt delete 1.0 end
 .fdcmd.f.txt insert end $fdvar(c_cmd)} \
-		-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 3 \
-		-pady 3 -text ... -width 1 
+		-text ... -width 1 
 	label $base.l7 \
 		-anchor w -borderwidth 0 \
-		-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \
 		-text Variable -width 8 
 	entry $base.e7 \
 		-background #fefefe -borderwidth 1 -highlightthickness 0 \
@@ -4408,8 +4432,7 @@ proc vTclWindow.fda {base} {
 	}
 	label $base.l8 \
 		-anchor w -borderwidth 0 \
-		-font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -text Text \
-		-width 8 
+		-text Text -width 8 
 	entry $base.e8 \
 		-background #fefefe -borderwidth 1 -highlightthickness 0 \
 		-selectborderwidth 0 -textvariable fdvar(c_text) 
@@ -4419,9 +4442,6 @@ proc vTclWindow.fda {base} {
 	label $base.l0 \
 		-borderwidth 1 -relief raised -text {checkbox .udf0.checkbox17} \
 		-textvariable fdvar(c_info) -width 28 
-	###################
-	# SETTING GEOMETRY
-	###################
 	grid $base.l1 \
 		-in .fda -column 0 -row 1 -columnspan 1 -rowspan 1 
 	grid $base.e1 \
@@ -4461,15 +4481,13 @@ proc vTclWindow.fda {base} {
 }
 
 proc vTclWindow.fdcmd {base} {
+global pref
 	if {$base == ""} {
 		set base .fdcmd
 	}
 	if {[winfo exists $base]} {
 		wm deiconify $base; return
 	}
-	###################
-	# CREATING WIDGETS
-	###################
 	toplevel $base -class Toplevel
 	wm focusmodel $base passive
 	wm geometry $base 282x274+504+229
@@ -4483,7 +4501,7 @@ proc vTclWindow.fdcmd {base} {
 	scrollbar $base.f.sb \
 		-borderwidth 1 -command {.fdcmd.f.txt yview} -orient vert -width 12 
 	text $base.f.txt \
-		-font -*-Clean-Medium-R-Normal--*-130-*-*-*-*-*-* -height 1 \
+		-font $pref(font_fix) -height 1 \
 		-width 115 -yscrollcommand {.fdcmd.f.sb set} 
 	frame $base.fb \
 		-height 75 -width 125 
@@ -4492,15 +4510,10 @@ proc vTclWindow.fdcmd {base} {
 		-command {set fdvar(c_cmd) [.fdcmd.f.txt get 1.0 "end - 1 chars"]
 Window hide .fdcmd
 fd_set_command} \
-		-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 \
-		-pady 3 -text Ok -width 5 
+		-text Ok -width 5 
 	button $base.fb.b2 \
 		-borderwidth 1 -command {Window hide .fdcmd} \
-		-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 \
-		-pady 3 -text Cancel 
-	###################
-	# SETTING GEOMETRY
-	###################
+		-text Cancel 
 	pack $base.f \
 		-in .fdcmd -anchor center -expand 1 -fill both -side top 
 	pack $base.f.sb \
@@ -4522,9 +4535,6 @@ proc vTclWindow.fdmenu {base} {
 	if {[winfo exists $base]} {
 		wm deiconify $base; return
 	}
-	###################
-	# CREATING WIDGETS
-	###################
 	toplevel $base -class Toplevel
 	wm focusmodel $base passive
 	wm geometry $base 288x70+103+0
@@ -4538,16 +4548,13 @@ proc vTclWindow.fdmenu {base} {
 		-borderwidth 1 \
 		-command {if {[tk_messageBox -title Warning -message "Delete all objects ?" -type yesno -default no]=="no"} return
 fd_init} \
-		-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 \
-		-pady 3 -text {Delete all} 
+		-text {Delete all} 
 	button $base.but18 \
 		-borderwidth 1 -command {set fdvar(geometry) [wm geometry .fd] ; fd_test } \
-		-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 \
-		-pady 3 -text {Test form} 
+		-text {Test form} 
 	button $base.but19 \
 		-borderwidth 1 -command {destroy .$fdvar(forminame)} \
-		-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 \
-		-pady 3 -text {Close test form} 
+		-text {Close test form} 
 	button $base.bex \
 		-borderwidth 1 \
 		-command {if {[fd_save_form $fdvar(formname)]==1} {
@@ -4558,33 +4565,24 @@ catch {Window destroy .fda}
 catch {Window destroy .fdcmd}
 catch {Window destroy .$fdvar(forminame)}
 }} \
-		-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 \
-		-pady 3 -text Close 
+		-text Close 
 	button $base.bload \
 		-borderwidth 1 -command {fd_load_form nimic design} \
-		-font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -padx 9 \
-		-pady 3 -text {Load from database} 
+		-text {Load from database} 
 	button $base.button17 \
 		-borderwidth 1 -command {fd_save_form nimic} \
-		-font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -padx 9 \
-		-pady 3 -text Save 
+		-text Save 
 	label $base.l1 \
-		-borderwidth 0 \
-		-font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* \
-		-text {Form name} 
+		-borderwidth 0 -text {Form name} 
 	entry $base.e1 \
 		-background #fefefe -borderwidth 1 -highlightthickness 0 \
 		-selectborderwidth 0 -textvariable fdvar(formname) 
 	label $base.l2 \
 		-borderwidth 0 \
-		-font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* \
 		-text {Form's window internal name} 
 	entry $base.e2 \
 		-background #fefefe -borderwidth 1 -highlightthickness 0 \
 		-selectborderwidth 0 -textvariable fdvar(forminame) 
-	###################
-	# SETTING GEOMETRY
-	###################
 	place $base.but17 \
 		-x 5 -y 80 -width 62 -height 24 -anchor nw -bordermode ignore 
 	place $base.but18 \
@@ -4614,9 +4612,6 @@ proc vTclWindow.gpw {base} {
 	if {[winfo exists $base]} {
 		wm deiconify $base; return
 	}
-	###################
-	# CREATING WIDGETS
-	###################
 	toplevel $base -class Toplevel
 	wm focusmodel $base passive
 	set sw [winfo screenwidth .]
@@ -4632,7 +4627,6 @@ proc vTclWindow.gpw {base} {
 	wm title $base "Input parameter"
 	label $base.l1 \
 		-anchor nw -borderwidth 1 \
-		-font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* \
 		-justify left -relief sunken -textvariable gpw(msg) -wraplength 200 
 	entry $base.e1 \
 		-background #fefefe -borderwidth 1 -highlightthickness 0 \
@@ -4647,15 +4641,10 @@ destroy .gpw
 	}
 	button $base.bok \
 		-borderwidth 1 -command {set gpw(result) 1
-destroy .gpw} -padx 9 \
-		-pady 3 -text Ok 
+destroy .gpw} -text Ok 
 	button $base.bcanc \
 		-borderwidth 1 -command {set gpw(result) 0
-destroy .gpw} -padx 9 \
-		-pady 3 -text Cancel 
-	###################
-	# SETTING GEOMETRY
-	###################
+destroy .gpw} -text Cancel 
 	place $base.l1 \
 		-x 10 -y 5 -width 201 -height 53 -anchor nw -bordermode ignore 
 	place $base.e1 \
@@ -4673,9 +4662,6 @@ proc vTclWindow.fdtb {base} {
 	if {[winfo exists $base]} {
 		wm deiconify $base; return
 	}
-	###################
-	# CREATING WIDGETS
-	###################
 	toplevel $base -class Toplevel
 	wm focusmodel $base passive
 	wm geometry $base 90x152+0+0
@@ -4687,47 +4673,36 @@ proc vTclWindow.fdtb {base} {
 	wm title $base "Toolbar"
 	radiobutton $base.rb1 \
 		-anchor w -borderwidth 1 \
-		-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \
 		-highlightthickness 0 -text Point -value point -variable fdvar(tool) \
 		-width 9 
 	radiobutton $base.rb2 \
 		-anchor w -borderwidth 1 \
-		-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \
-		-foreground #000000 -highlightthickness 0 -selectcolor #0000ee \
+		-foreground #000000 -highlightthickness 0 \
 		-text Label -value label -variable fdvar(tool) -width 9 
 	radiobutton $base.rb3 \
 		-anchor w -borderwidth 1 \
-		-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \
 		-highlightthickness 0 -text Entry -value entry -variable fdvar(tool) \
 		-width 9 
 	radiobutton $base.rb4 \
 		-anchor w -borderwidth 1 \
-		-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \
 		-highlightthickness 0 -text Button -value button \
 		-variable fdvar(tool) -width 9 
 	radiobutton $base.rb5 \
 		-anchor w -borderwidth 1 \
-		-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \
 		-highlightthickness 0 -text {List box} -value listbox \
 		-variable fdvar(tool) -width 9 
 	radiobutton $base.rb6 \
 		-anchor w -borderwidth 1 \
-		-font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* \
 		-highlightthickness 0 -text {Check box} -value checkbox \
 		-variable fdvar(tool) -width 9 
 	radiobutton $base.rb7 \
 		-anchor w -borderwidth 1 \
-		-font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* \
 		-highlightthickness 0 -text {Radio btn} -value radio \
 		-variable fdvar(tool) -width 9 
 	radiobutton $base.rb8 \
 		-anchor w -borderwidth 1 \
-		-font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* \
 		-highlightthickness 0 -text Query -value query -variable fdvar(tool) \
 		-width 9 
-	###################
-	# SETTING GEOMETRY
-	###################
 	grid $base.rb1 \
 		-in .fdtb -column 0 -row 0 -columnspan 1 -rowspan 1 
 	grid $base.rb2 \
@@ -4753,9 +4728,6 @@ proc vTclWindow.sqlw {base} {
 	if {[winfo exists $base]} {
 		wm deiconify $base; return
 	}
-	###################
-	# CREATING WIDGETS
-	###################
 	toplevel $base -class Toplevel
 	wm focusmodel $base passive
 	wm geometry $base 551x408+192+169
@@ -4774,18 +4746,13 @@ proc vTclWindow.sqlw {base} {
 		-borderwidth 1 -command {.sqlw.f.t yview} -orient vert -width 10 
 	text $base.f.t \
 		-borderwidth 1 \
-		-font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-* \
 		-height 200 -width 200 -wrap word \
 		-xscrollcommand {.sqlw.f.01 set} \
 		-yscrollcommand {.sqlw.f.02 set} 
 	button $base.b1 \
-		-borderwidth 1 -command {.sqlw.f.t delete 1.0 end} -padx 9 \
-		-pady 3 -text Clean 
+		-borderwidth 1 -command {.sqlw.f.t delete 1.0 end} -text Clean 
 	button $base.b2 \
-		-borderwidth 1 -command {destroy .sqlw} -padx 9 -pady 3 -text Close 
-	###################
-	# SETTING GEOMETRY
-	###################
+		-borderwidth 1 -command {destroy .sqlw} -text Close 
 	grid columnconf $base 0 -weight 1
 	grid columnconf $base 1 -weight 1
 	grid rowconf $base 0 -weight 1
@@ -4806,6 +4773,180 @@ proc vTclWindow.sqlw {base} {
 		-in .sqlw -column 1 -row 1 -columnspan 1 -rowspan 1 
 }
 
+proc vTclWindow.rcw {base} {
+    if {$base == ""} {
+        set base .rcw
+    }
+    if {[winfo exists $base]} {
+        wm deiconify $base; return
+    }
+    toplevel $base -class Toplevel
+    wm focusmodel $base passive
+    wm geometry $base 215x75+258+213
+    wm maxsize $base 1009 738
+    wm minsize $base 1 1
+    wm overrideredirect $base 0
+    wm resizable $base 0 0
+    wm deiconify $base
+    wm title $base "Rename field"
+    label $base.l1 \
+        -borderwidth 0 -text {New name} 
+    entry $base.e1 \
+        -background #fefefe -borderwidth 1 -textvariable tiw(new_cn)
+	bind $base.e1 <Key-KP_Enter> "rename_column"
+	bind $base.e1 <Key-Return> "rename_column"
+    frame $base.f \
+        -height 75 -relief groove -width 147 
+    button $base.f.b1 \
+        -borderwidth 1 -command rename_column -text Rename 
+    button $base.f.b2 \
+        -borderwidth 1 -command {Window destroy .rcw} -text Cancel 
+    label $base.l2 -borderwidth 0 
+    grid $base.l1 \
+        -in .rcw -column 0 -row 0 -columnspan 1 -rowspan 1 
+    grid $base.e1 \
+        -in .rcw -column 1 -row 0 -columnspan 1 -rowspan 1 
+    grid $base.f \
+        -in .rcw -column 0 -row 4 -columnspan 2 -rowspan 1 
+    grid $base.f.b1 \
+        -in .rcw.f -column 0 -row 0 -columnspan 1 -rowspan 1 
+    grid $base.f.b2 \
+        -in .rcw.f -column 1 -row 0 -columnspan 1 -rowspan 1 
+    grid $base.l2 \
+        -in .rcw -column 0 -row 3 -columnspan 1 -rowspan 1 
+}
+
+proc vTclWindow.anfw {base} {
+    if {$base == ""} {
+        set base .anfw
+    }
+    if {[winfo exists $base]} {
+        wm deiconify $base; return
+    }
+    toplevel $base -class Toplevel
+    wm focusmodel $base passive
+    wm geometry $base 302x114+195+175
+    wm maxsize $base 1009 738
+    wm minsize $base 1 1
+    wm overrideredirect $base 0
+    wm resizable $base 0 0
+    wm deiconify $base
+    wm title $base "Add new field"
+    label $base.l1 \
+        -borderwidth 0 \
+        -text {Field name} 
+    entry $base.e1 \
+        -background #fefefe -borderwidth 1 -textvariable anfw(name) 
+    bind $base.e1 <Key-KP_Enter> {
+        focus .anfw.e2
+    }
+    bind $base.e1 <Key-Return> {
+        focus .anfw.e2
+    }
+    label $base.l2 \
+        -borderwidth 0 \
+        -text {Field type} 
+    entry $base.e2 \
+        -background #fefefe -borderwidth 1 -textvariable anfw(type) 
+    bind $base.e2 <Key-KP_Enter> {
+        anfw:add
+    }
+    bind $base.e2 <Key-Return> {
+        anfw:add
+    }
+    button $base.b1 \
+        -borderwidth 1 -command anfw:add -text {Add field} 
+    button $base.b2 \
+        -borderwidth 1 -command {Window destroy .anfw} -text Cancel 
+    place $base.l1 \
+        -x 25 -y 10 -anchor nw -bordermode ignore 
+    place $base.e1 \
+        -x 98 -y 7 -width 178 -height 22 -anchor nw -bordermode ignore 
+    place $base.l2 \
+        -x 25 -y 40 -anchor nw -bordermode ignore 
+    place $base.e2 \
+        -x 98 -y 37 -width 178 -height 22 -anchor nw -bordermode ignore 
+    place $base.b1 \
+        -x 70 -y 75 -anchor nw -bordermode ignore 
+    place $base.b2 \
+        -x 160 -y 75 -anchor nw -bordermode ignore 
+}
+
+proc vTclWindow.uw {base} {
+    if {$base == ""} {
+        set base .uw
+    }
+    if {[winfo exists $base]} {
+        wm deiconify $base; return
+    }
+    toplevel $base -class Toplevel
+    wm focusmodel $base passive
+    wm geometry $base 263x220+233+165
+    wm maxsize $base 1009 738
+    wm minsize $base 1 1
+    wm overrideredirect $base 0
+    wm resizable $base 0 0
+    wm deiconify $base
+    wm title $base "Define new user"
+    label $base.l1 \
+        -borderwidth 0 -anchor w -text "User name"
+    entry $base.e1 \
+        -background #fefefe -borderwidth 1 -textvariable uw(username) 
+	bind $base.e1 <Key-Return> "focus .uw.e2"
+	bind $base.e1 <Key-KP_Enter> "focus .uw.e2"
+    label $base.l2 \
+        -borderwidth 0 -text Password 
+    entry $base.e2 \
+        -background #fefefe -borderwidth 1 -show * -textvariable uw(password) 
+	bind $base.e2 <Key-Return> "focus .uw.e3"
+	bind $base.e2 <Key-KP_Enter> "focus .uw.e3"
+    label $base.l3 \
+        -borderwidth 0 -text {verify password} 
+    entry $base.e3 \
+        -background #fefefe -borderwidth 1 -show * -textvariable uw(verify) 
+	bind $base.e3 <Key-Return> "focus .uw.cb1"
+	bind $base.e3 <Key-KP_Enter> "focus .uw.cb1"
+    checkbutton $base.cb1 \
+        -borderwidth 1 -offvalue NOCREATEDB -onvalue CREATEDB \
+        -text {Alow user to create databases } -variable uw(createdb) 
+    checkbutton $base.cb2 \
+        -borderwidth 1 -offvalue NOCREATEUSER -onvalue CREATEUSER \
+        -text {Allow users to create other users} -variable uw(createuser) 
+    label $base.l4 \
+        -borderwidth 0 -anchor w -text {Valid until (date)} 
+    entry $base.e4 \
+        -background #fefefe -borderwidth 1 -textvariable uw(valid)
+	bind $base.e4 <Key-Return> "focus .uw.b1"
+	bind $base.e4 <Key-KP_Enter> "focus .uw.b1"
+    button $base.b1 \
+        -borderwidth 1 -command uw:create_user -text Create 
+    button $base.b2 \
+        -borderwidth 1 -command {Window destroy .uw} -text Cancel 
+    place $base.l1 \
+        -x 5 -y 7 -width 62 -height 16 -anchor nw -bordermode ignore 
+    place $base.e1 \
+        -x 109 -y 5 -width 146 -height 20 -anchor nw -bordermode ignore 
+    place $base.l2 \
+        -x 5 -y 35 -anchor nw -bordermode ignore 
+    place $base.e2 \
+        -x 109 -y 32 -width 146 -height 20 -anchor nw -bordermode ignore 
+    place $base.l3 \
+        -x 5 -y 60 -anchor nw -bordermode ignore 
+    place $base.e3 \
+        -x 109 -y 58 -width 146 -height 20 -anchor nw -bordermode ignore 
+    place $base.cb1 \
+        -x 5 -y 90 -anchor nw -bordermode ignore 
+    place $base.cb2 \
+        -x 5 -y 115 -anchor nw -bordermode ignore 
+    place $base.l4 \
+        -x 5 -y 145 -width 100 -height 16 -anchor nw -bordermode ignore 
+    place $base.e4 \
+        -x 110 -y 143 -width 146 -height 20 -anchor nw -bordermode ignore 
+    place $base.b1 \
+        -x 45 -y 185 -anchor nw -width 70 -height 25 -bordermode ignore 
+    place $base.b2 \
+        -x 140 -y 185 -anchor nw -width 70 -height 25 -bordermode ignore 
+}
 
 Window show .
 Window show .dw
-- 
GitLab