---------------------------------------------------------------------------
-PGACCESS 0.98.4 29 January 2000
+PGACCESS 0.98.7 27 January 2001
================================
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
1. How to INSTALL ?
-You will need a Tcl/Tk package, at least Tcl 7.6 and Tk 4.2, recommended
-Tcl/Tk 8.x
+You will need a Tcl/Tk package greater than 8.0
For Unix users, unpack the pgaccess-xxx.tar.gz archieve in you preferred
directory (usually /usr/local).
CREATE SEQUENCE "cities_id_seq" start 7 increment 1 maxvalue 2147483647 minvalue 1 cache 1 ;
-SELECT nextval ('cities_id_seq');
+SELECT nextval ('"cities_id_seq"');
CREATE TABLE "pga_queries" (
"queryname" character varying(64),
"querytype" character,
"querytables" text,
"querylinks" text,
"queryresults" text,
- "querycomments" text);
+ "querycomments" text
+);
CREATE TABLE "pga_forms" (
"formname" character varying(64),
- "formsource" text);
+ "formsource" text
+);
CREATE TABLE "pga_scripts" (
"scriptname" character varying(64),
- "scriptsource" text);
+ "scriptsource" text
+);
CREATE TABLE "pga_reports" (
"reportname" character varying(64),
"reportsource" text,
"reportbody" text,
"reportprocs" text,
- "reportoptions" text);
+ "reportoptions" text
+);
CREATE TABLE "phonebook" (
"name" character varying(32),
"phone_nr" character varying(16),
"city" character varying(32),
"company" bool,
- "continent" character varying(16));
+ "continent" character varying(16)
+);
CREATE TABLE "pga_layout" (
"tablename" character varying(64),
"nrcols" int2,
"colnames" text,
- "colwidth" text);
+ "colwidth" text
+);
CREATE TABLE "pga_schema" (
"schemaname" character varying(64),
"schematables" text,
- "schemalinks" text);
+ "schemalinks" text
+);
REVOKE ALL on "pga_schema" from PUBLIC;
GRANT ALL on "pga_schema" to PUBLIC;
CREATE TABLE "cities" (
- "id" int4 DEFAULT nextval ( '"cities_id_seq"' ) NOT NULL,
+ "id" int4 DEFAULT nextval('cities_id_seq'::text) NOT NULL,
"name" character varying(32) NOT NULL,
- "prefix" character varying(16) NOT NULL);
+ "prefix" character varying(16) NOT NULL
+);
REVOKE ALL on "cities" from PUBLIC;
+GRANT INSERT,SELECT,RULE on "cities" to "teo";
CREATE FUNCTION "getcityprefix" (int4 ) RETURNS varchar AS 'select prefix from cities where id = $1 ' LANGUAGE 'SQL';
COPY "pga_queries" FROM stdin;
Query that can be saved as view S select * from phonebook where continent='usa' \N \N \N \N
Download</h2>
<hr>
-<br>The primary site for PgAccess downloads is:
+<br>The primary site for PgAccess download is:
<ul><a href="ftp://ftp.flex.ro/pub/pgaccess">ftp://ftp.flex.ro/pub/pgaccess</a>
<ul>
-<li>
-<a href="ftp://ftp.flex.ro/pub/pgaccess/pgaccess-0.98.5.tar.gz">Unix tar.gz
-file</a></li>
-
-<li>
-<a href="ftp://ftp.flex.ro/pub/pgaccess/pgaccess-0.98.5.zip">Windows .zip
-file</a></li>
-</ul>
-</ul>
-
-<p>Another one (just with a little bit faster, try this one first) would
-be :
-<ul><a href="ftp://speedy.flex.ro/pub/pgaccess">ftp://speedy.flex.ro/pub/pgaccess</a>
-<ul>
-<li>
-<a href="ftp://speedy.flex.ro/pub/pgaccess/pgaccess-0.98.5.tar.gz">Unix tar.gz
-file</a></li>
-
-<li>
-<a href="ftp://speedy.flex.ro/pub/pgaccess/pgaccess-0.98.5.zip">Windows .zip
-file</a></li>
+<li><a href="ftp://ftp.flex.ro/pub/pgaccess/pgaccess-0.98.7.tar.gz">Unix tar.gz file</a></li>
+<li><a href="ftp://ftp.flex.ro/pub/pgaccess/pgaccess-0.98.7.zip">Windows ZIP file</a></li>
</ul>
</ul>
using Visual Tcl, the best tool for developing Tcl/Tk applications I've
ever seen.
<p><b>Last version</b>
-<br>Last stable version is 0.98.5 , released on 30 March 2000. Read <a href="whatsnew.html">what's
+<br>Last stable version is 0.98.7 , released on 27 January 2001. Read <a href="whatsnew.html">what's
new</a> .
<p><b>Portability issues</b>
<br>PgAccess is available for every platform where PostgreSQL was ported
<br>- HPUX
<br>- Irix
<br>- Windows 95,98,NT
-<p>PgAccess needs Tcl/Tk versions 8.0.x and higher thought PgAccess. For
-win32 platforms there are some special DLL's that have to be downloaded
-and installed, more information <a href="win32.html">here</a>.
+<p>PgAccess needs Tcl/Tk versions 8.0.x and higher. For win32 platforms there are some special DLL's that have to be downloaded and installed, more information <a href="win32.html">here</a>.
<p>PgAccess is protected by the following <a href="copyright.html">copyright</a>.
</body>
</html>
<meta name="GENERATOR" content="Mozilla/4.72 [en] (X11; I; Linux 2.2.14 i586) [Netscape]">
</head>
<body bgcolor="#FEFEDF">
+<b>27 January 2001 - PgAccess 0.98.7</b>
+<ul>
+<li>
+Fixed table creation when all columns are inherited and no new columns are added
+</li>
+<li>
+Geometry improvements in diagram definition
+</li>
+<li>
+added DLL's for Win32, Tcl/Tk 8.3.x and PostgreSQL 7.x
+</li>
+</ul>
+
+<b>1 May 2000 - PgAccess 0.98.6</b>
+<ul>
+<li>
+fixed a ugly bug in forms, query opening procedure</li>
+</ul>
<b>30 March 2000 - PgAccess 0.98.5</b>
<ul>
<li>
set DataControlVar($base.$name,recno) 0
set DataControlVar($base.$name,nrecs) \[pg_result \$res -numTuples\]
setCursor NORMAL
+ pg_result \$res -clear
}"
namespace eval ::DataControl($base.$name) "proc setSQL {sqlcmd} {
global DataControlVar
" {} "CREATEDB" {italic} "
Message returned if the command completes successfully.
-" {} "NOTICE: createdb: database \"name\" already exists." {italic} "
+" {} "WARN: createdb: database \"name\" already exists." {italic} "
This occurs if database specified already exists.
" {} "ERROR: Unable to create database directory directory" {italic} "
Prints a detailed vacuum activity report for each table.
" {} "ANALYZE" {italic} "
- Updates column statistics used by the optimizer to determine the most efficient way to execute a query. The statistics represent the dispersion of the data in each column. This information is valuable when several execution paths are possible.
+ Updates column statistics used by the optimizer to determine the most efficient way to execute a query. The statistics represent the disbursion of the data in each column. This information is valuable when several execution paths are possible.
" {} "table" {italic} "
The name of a specific table to vacuum. Defaults to all tables.
"File" "Soubor"
-"Your table has no fields!" "Tabulka nemá polo¾ky!"
+"Your table has no columns!" "Tabulka nemá polo¾ky!"
"Height" "Vý¹ka"
"File" "Datei"
-"Your table has no fields!" "Die Tabelle hat keine Felder."
+"Your table has no columns!" "Die Tabelle hat keine Felder."
"Height" "Höhe"
array set Messages {
-"Label" "Etiquette"
+"Label" "Libellé"
-"Save schema" "Sauver schémas"
+"Save schema" "Sauver schéma"
"Is unique ?" "Est unique ?"
"Report builder" "Constructeur d'états"
-"Criteria" "Critère"
+"Criteria" "Critères"
"FATAL ERROR upgrading PgAccess table" "ERREUR FATALE en actualisant la table PgAccess"
-"Save this query as a view" "Sauver cette requête comme vue ?"
+"Save this query as a view" "Sauver cette requête en tant que vue"
"Page header" "En-tête de page"
-"Query name" "Nom de requête"
+"Query name" "Nom de la requête"
-"Please select an object first!" "Selectionnez un objet d'abord"
+"Please select an object first!" "Veuillez sélectionner un objet d'abord"
-"Fields :" "Le champs de index"
+"Fields :" "Champs :"
"Name" "Nom"
"File name" "Nom du fichier"
-"Detail record" "Detail d'enregistrement"
+"Detail record" "Détail d'enregistrement"
-"Auto-load the last opened database at startup" "Chargement automatique de la base au démarrage"
+"Auto-load the last opened database at startup" "Chargement automatique de la dernière base ouverte au démarrage"
"Maxvalue" "Valeur maximale"
"Test form" "Tester formulaire"
-"Error trying to connect to database '%s' on host %s \n\nPostgreSQL error message:%s" "Erreur de liaison à la base de données '%s' pour machine %s \n\nMessage d'erreur PostgreSQL :%s"
+"Error trying to connect to database '%s' on host %s \n\nPostgreSQL error message:%s" "Erreur de liaison à la base de données '%s' pour machine %s \n\nMessage d'erreur PostgreSQL:%s"
-"No field type ?" "Type champ inexistant ?"
+"No field type ?" "Type de champ inexistant ?"
"User without name?" "Cette utilisateur a-t-il un nom?"
"Preferences" "Préférences"
-"View '%s' already exists!\nOverwrite ?" "La vue '%s' existe déjà!\n Ecraser ?"
+"View '%s' already exists!\nOverwrite ?" "La vue '%s' existe déjà !\n Écraser ?"
-"You have to select an index!" "Vous devez selectionner un index!"
-
-"Field type" "Type de champ"
+"You have to select an index!" "Vous devez sélectionner un index"
+"Field type" "Type"
+
"Script name" "Nom du script"
-"Reload" "Valider"
+"Reload" "Appliquer"
-"Remove table %s from query?" "Eliminer table %s de la requête ?"
+"Remove table %s from query?" "Énlever la table %s de la requête ?"
"SQL window" "Fenêtre SQL"
"Allow user to create other users" "Peut créer d'autres utilisateurs"
-"Delete current record ?" "Détruire enregistrement courant ?"
+"Delete current record ?" "Détruire l'enregistrement courant ?"
"List box" "Liste"
-"Save to query builder" "Sauver le constructeur de requêtes"
+"Save to query builder" "Entregistrer la requête"
"fixed width" "largeur de police fixe"
"Yes" "Oui"
-"Add label" "Ajouter étiquette"
+"Add label" "Ajouter un libellé"
-"Sequence created!" "Le séquence avait été créée"
+"Sequence created!" "La séquence a été créée"
"Field information" "Information de champ"
-"Design" "Editer"
+"Design" "Éditer"
"Field" "Champ"
"Increment" "Incrément"
"No" "Non"
+
+"Form designer" "Créateur graphique de formulaires"
"Form design" "Création du formulaire"
"You must supply a return type!" "Vous devez fournir un type de retour"
-"Remove field from result ?" "Eliminer champ du résultat ?"
+"Remove field from result ?" "Éliminer le champ du résultat?"
"There is another object (a %s) with the same name.\nPlease change it!" "Il y a un autre objet (%s) avec le même nom.\nChangez le SVP!"
-"This query has no commands?" "Cette requête n'a pas de définition?"
+"This query has no commands?" "Cette requête n'a pas de définition ?"
-"Execute query" "Execute requête"
+"Execute query" "Exécuter la requête"
-"field cannot be null" "champ ne peut être vide"
+"field cannot be null" "Ce champ ne peut être vide"
"Help" "Aide"
-"Rename column" "Renomme champ"
+"Rename column" "Renommer champ"
"Database" "Base de données"
"Table" "Table"
-"verify password" "encore un fois"
+"verify password" "encore une fois"
"Vacuum" "Vider"
-"Default value" "Valeur par defaut"
+"Default value" "Valeur par défaut"
"Import" "Importer"
"Create new table" "Création de nouvelle table"
-"Visual query designer" "Créateur visuel de requêtes"
+"Visual query designer" "Créateur graphique de requêtes"
-"Delete all" "Détruire tous"
+"Delete all" "Détruire"
"You are going to delete\n\n %s \n\nProceed?" "Vous allez détruire\n\n %s \n\nD'accord?"
-"Schema name" "Nom de schéma"
+"Schema name" "Nom du schéma"
"Error executing query" "Erreur en exécutant la requête"
"Report name" "Nom de l'état"
-"Add field" "Ajout champ"
+"Add field" "Ajouter"
-"Field name" "Nom de champ"
+"Field name" "Nom"
"FATAL ERROR searching for PgAccess system tables" "ERREUR FATALE en cherchant le système de tables PgAccess"
-"A big number of rows displayed in table view will take a lot of memory!" "L'affichage d'un grand nombre de colonnes prend beaucoup de mémoire"
+"A big number of rows displayed in table view will take a lot of memory!" "L'affichage d'un grand nombre de lignes prend beaucoup de mémoire"
-"Preview" "Pré-visualisation"
+"Preview" "Aperçu"
"Users" "Utilisateurs"
"Form's window internal name" "Le nom interne de la fenêtre de formulaire"
-"Sort field" "Trier champs"
+"Sort field" "Ordre champs"
"New name is the same as the old one!" "Le nouveau nom est le même que l'ancien"
"Returns" "Retours"
-"Define new user" "Définir nouvel utilisateur"
+"Define new user" "Créer un nouvel utilisateur"
"Move down" "Descendre"
-"Design script" "Script de création"
+"Design script" "Créer un script"
"Check box" "Case à cocher"
"FINAL WARNING" "DERNIER AVERTISSEMENT"
-"Add table" "Ajouter table"
+"Add table" "Ajouter une table"
-"Table viewer font" "Police de visualisateur de tables"
+"Table viewer font" "Police du visualisateur de tables"
"The field type is not specified!" "Le type de champ n'est pas spécifié"
-"Close test form" "Fermer test du formulaire"
+"Close test form" "Fermer le test du formulaire"
"Export table" "Exporter"
-"Add new index" "Ajout nouvel index"
+"Add new index" "Ajouter un nouvel index"
"Left" "Gauche"
-"Field delimiter" "Séparateur de champs"
+"Field delimiter" "Séparateur champ"
-"Add formula" "Ajouter formule"
+"Add formula" "Ajouter une formule"
"Open database" "Ouvre la base de données"
"Error" "Erreur"
-"Enter a field name" "Entrez un nom de champ !"
+"Enter a field name" "Entrez un nom de champ"
-"field name" "Nom de champ"
+"field name" "Nom du champ"
"Forms" "Formulaires"
-"Cannot add column" "Ne peut ajouter de colonne"
+"Cannot add column" "Impossible d'ajouter une colonne"
"Clean" "Nettoyer"
-"Delete all objects ?" "Détruire tous les objets"
+"Delete all objects ?" "Détruire tous les objets ?"
"Preferred language" "Langage préféré"
-"Execute SQL" "Exécute SQL"
+"Execute SQL" "Exécuter SQL"
"Sequences" "Séquences"
+
+"Sequence" "Séquence"
"Button" "Bouton"
"Font fixed" "Police fixe"
-"Table name" "Nom de table"
+"Table name" "Nom de la table"
-"Export" "Export"
+"Export" "Exporter"
"Change user" "Changer utilisateur"
-"You must give object a new name!" "Vous devez donner un nouveau nom"
+"You must give object a new name!" "Vous devez donner un nouveau nom."
"Query" "Requête"
-"User name" "Nom d'utilisateur"
+"User name" "Nom de l'utilisateur"
"Font normal" "Police normale"
"You must supply a name for this function!" "Vous devez fournir un nom pour la fonction"
-"You have to select index fields!" "Vous devez selectionner le champ pour l'index"
+"You have to select index fields!" "Vous devez sélectionner le champ pour l'index"
"Constraint" "Contrainte"
"Inherits" "Source"
-"Delete field" "Détruire"
+"Delete field" "Détruire champ"
-"About" "A propos"
+"About" "À propos"
"Empty field name ?" "Nom de champ inexistant ?"
"Host" "Machine"
-"vacuuming database %s ..." "Vider base %s ..."
+"vacuuming database %s ..." "Vide la base %s ..."
"Indexes defined" "Index définis"
"Schema '%s' already exists!" "Le schéma '%s' existe déjà!"
-"There is another field with the same name: '%s'!\n\nReplace it ?" "Il y a un autre champ avec le même nom : '%s'!\n\nRemplacer?"
+"There is another field with the same name: '%s'!\n\nReplace it ?" "Il y a un autre champ avec le même nom : '%s'\n\nRemplacer ?"
-"Contents" "Contient"
+"Contents" "Contenu"
"Views" "Vues"
"Variable" "Variable"
-"Error executing query\n\n%s\n\nPostgreSQL error message:\n%s\nPostgreSQL status:%s" "Erreur en exécutant la requête\n\n%s\n\nMessage d'erreur PostgreSQL :\n%s \n Statut de PostgreSQL:%s"
+"Error executing query\n\n%s\n\nPostgreSQL error message:\n%s\nPostgreSQL status:%s" "Erreur en exécutant la requête\n\n%s\n\nMessage d'erreur PostgreSQL:\n%s \n Statut de PostgreSQL:%s"
"Filter conditions" "Conditions de filtre"
-"Error retrieving query definition" "Erreur en retrouvant la définition de la requête"
+"Error retrieving query definition" "Erreur en charchant la définition de la requête"
"Error deleting view" "Erreur en détruisant la vue"
-"New" "Nouveau"
+"New" "Créer"
"Tables" "Tables"
"Create" "Créer"
-"Forms need an internal name, only literals, low case" "Les formulaires ont besoin d'un nom interne, seulement en lettres minuscules"
+"Forms need an internal name, only literals, low case" "Les formulaires ont besoin d'un nom interne, seulement en lettres alphabétiques minuscules"
"Do you want to save the form into the database?" "Voulez vous sauver le formulaire dans la base?"
"Schema '%s' was not found!" "Le schéma '%s' n'a pas été trouvé"
-"proportional" "Proportionnelle"
+"proportional" "proportionnelle"
-"Function saved!" "Le fonction avait ete créée"
+"Function saved!" "La fonction a été créée"
"with OIDs" "avec des OIDs"
-"Table information" "Information de table"
+"Table information" "Informations sur la table"
-"Error inserting new record" "Erreur en introduisant le nouvel enregistrement"
+"Error inserting new record" "Erreur en écrivant le nouvel enregistrement"
"Column name '%s' already exists in this table!" "Le nom de colonne existe déjà dans cette table !"
"File" "Fichier"
-"Your table has no fields!" "Cette table n'a pas de champ?"
+"Your table has no columns!" "Cette table n'a pas de champ !"
"Height" "Hauteur"
-"You will always get the latest version at:" "Le derniere version toujours à"
+"You will always get the latest version at:" "Dernière version disponible à :"
"Form must have a name" "Le formulaire doit avoir un nom !"
"Allow user to create databases" "Peut créer une base"
-"Cancel" "Abandon"
+"Cancel" "Annuler"
"Is clustered ?" "Est groupé ?"
-"Add new column" "Ajout nouveau champ"
-
-"Show SQL" "Montrez le code SQL."
+"Add new column" "Ajouter un nouveau champ"
+
+"Show SQL" "Montrer SQL"
"New name" "Nouveau nom"
-"Table '%s' not found!" "Le table '%s' n'est pas trouvée"
+"Table '%s' not found!" "La table '%s' est introuvable."
"Form name" "Nom du formulaire"
-"Visual designer" "Créateur visuel"
+"Visual designer" "Créateur graphique"
-"You choose to delete index\n\n %s \n\nProceed?" "Vous allez détruire index\n\n %s \n\nConfirmation?"
+"You choose to delete index\n\n %s \n\nProceed?" "Vous allez détruire l'index\n\n %s \n\nConfirmation ?"
-"Error retrieving from" "Erreur en retrouvant..."
+"Error retrieving from" "Erreur en retrouvant"
"Save query definition" "Sauver la définition de la requête"
-"A Tcl/Tk interface to\nPostgreSQL\nby Constantin Teodorescu" "Une Tcl/Tk interface pour\nPostgreSQL\npar Constantin Teodorescu"
+"A Tcl/Tk interface to\nPostgreSQL\nby Constantin Teodorescu" "Interface Tcl/Tk pour PostgreSQL\npar Constantin Teodorescu\nTraduction g.delafond@medsyn.fr"
"Operation completed!" "Opération finie"
-"Max rows displayed in table/query view" "Nombre maximal de colonnes affichées dans la table/vue de requête"
+"Max rows displayed in table/query view" "Nombre maximal de lignes affichées dans la table/vue de requête"
"Passwords do not match!" "Les mots de passe ne vont pas"
"Error retrieving schema definition" "Erreur en retrouvant la définition du schéma"
-"This is an action query!\n\nExecute it?" "Ceci est une requête d'action !\nExécuter ?"
+"This is an action query!\n\nExecute it?" "Ceci est une requête d'action.\nExécuter ?"
"Error retrieving view definition for" "Erreur en lisant la définition pour la vue"
"options" "options"
-"Sequence '%s' not found!" "Le séquence '%s' n'a pas été trouvée"
+"Sequence '%s' not found!" "La séquence '%s' n'a pas été trouvée"
"Text" "Texte"
-"Tcl error executing pg_exec %s\n\n%s" "Erreur Tcl en exécutant %s\n\n%s"
+"Tcl error executing pg_exec %s\n\n%s" "Erreur Tcl en exécutant pg_exec %s\n\n%s"
"Width" "Largeur"
"Queries" "Requêtes"
-"Query '%s' already exists!" "La requête '%s' existe dejà!"
+"Query '%s' already exists!" "La requête '%s' existe dejà !"
"Font bold" "Police grasse"
"Top" "Haut"
-"You must supply a name for your table!" "Vous devez introduire un nom pour cette table"
+"You must supply a name for your table!" "Vous devez fournir un nom pour cette table"
"Page footer" "Pied de page"
"Attributes" "Attributs"
-"Table '%s' already in schema" "Le table est déjà dans le schéma"
+"Table '%s' already in schema" "La table '%s' est déjà dans le schéma"
"Username" "Utilisateur"
"Sequence name" "Nom de séquence"
-"Define sequence" "Définir la séquence"
+"Define sequence" "Créer la séquence"
"Function" "Fonction"
-"Sorting and filtering not (yet) available from queries!\n\nPlease enter them in the query definition!" "Tri et filtrage pas (encore) possible à partir des requêtes!\n\nEntrez les dans la définition de la requête SVP"
+"Sorting and filtering not (yet) available from queries!\n\nPlease enter them in the query definition!" "Tri et filtrage pas (encore) possibles à partir des requêtes!\n\nEntrez les dans la définition de la requête SVP."
-"Reports" "Etats"
+"Reports" "États"
-"Columns" "Champs"
+"Columns" "Colonnes"
"Indexes" "Index"
-"Permissions" "Permissions"
+"Table OID" "OID de la table"
-"not null" "non vide"
+"Owner ID" "ID de l'utilisateur"
-"Cluster index" "index groupe"
+"Has primary key ?" "A une clé primaire ?"
-"index columns" "index champs"
+"Has rules ?" "Utilise des règles ?"
-"Add user" "Ajoute utilisateur"
+"Number of tuples" "Nombre de multiplets"
-"Change permissions" "Change droits"
+"Number of pages" "Nombre de pages"
-"select" "sélections"
+"index columns" "Colonnes d'index"
-"update" "actualise"
+"Cluster index" "Grouper index"
-"insert" "introduire"
+"General" "Général"
-"rule" "règles"
+"Statistics" "Statistiques"
-"Identification" "Identification"
+"Index name" "Nom d'index"
-"Owner ID" "ID du propriétaire"
+"Index fields" "Champs d'index"
-"Has primary key ?" "A une clé primaire ?"
+"select" "Sélectionner"
-"Has rules ?" "A des règles?"
+"update" "Actualiser"
-"Statistics" "Statistiques"
+"insert" "Insérer"
-"Number of tuples" "Nombre des enregistrements"
+"rule" "Règle"
-"Number of pages" "Nombres des pages"
+"Add user" "Ajouter un utilisateur"
-"Index name" "Nom d'index"
+"Change permissions" "Changer les droits"
-"Index fields" "Champs d'index"
-
-"Table OID" "OID de table"
+"Comments" "Commentaires"
-}
+"You must supply the function language!" "Vous devez fournir le langage de la fonction"
+
+"Database field" "Champ"
+
+"Class" "Groupe"
+
+"Font" "Police"
+"Align" "Aligner"
+"Foreground" "Avant-plan"
+
+"Background" "Arrière-plan"
+
+"Border width" "Largeur de bordure"
+
+"Width" "Largeur"
+
+"Height" "Hauteur"
+
+"Left" "Gauche"
+
+"Top" "Haut"
+
+"primary key" "Clé primaire"
+
+"Print" "Imprimer"
+
+"Report preview" "Aperçu de l'état"
+
+"The printed image in Postscript is in the file pgaccess-report.ps" "L'image imprimée en postscript est dans le fichier pgaccess-report.ps"
+
+"Delete current report object?" "Détruire l'objet d'état en cours ?"
+
+"Your query has been executed without error!" "Votre requête a été exécutée sans erreur"
+
+"Layout info changed !\nRescanning..." "Informations de sortie changées.\nRecharge..."
+
+"Visual schema designer" "Créateur graphique de schémas"
+
+"Print to Postscript" "Imprimer en Postscript"
+
+"Save Error: Unable to open '$fn' for writing\n$fid" "Erreur d'enregistrement : Impossible d'ouvrir '$fn' pour écrire\n$fid"
+
+"Query result:%s" "Résultat de la requête %s"
+
+"Loading maximum %s" "Charge au maximum %s"
+
+"records..." "enregistrements..."
+
+"Startup script" "Script de démarrage"
+
+"Multiple ($nrlay) layout info found\n\nPlease report the bug!" "Informations multiples trouvées dans ($nrlay) \n\n Veuillez reporter le bug"
+
+"Table information - %s" "Informations sur la table - %s"
+
+"Back" "Retour"
+
+"Loading maximum %s records ..." "Charge au maximum %s enregistrements..."
+
+}
"File" "File"
-"Your table has no fields!" "La tabella non ha campi !"
+"Your table has no columns!" "La tabella non ha campi !"
"Height" "Altezza"
"File" "Fájl"
-"Your table has no fields!" "A táblában nincsenek mezõk!"
+"Your table has no columns!" "A táblában nincsenek mezõk!"
"Height" "Magasság"
"File" "Arquivo"
-"Your table has no fields!" "Sua tabela não possui campos !"
+"Your table has no columns!" "Sua tabela não possui campos !"
"Height" "Altura"
"File" "Fiºier"
-"Your table has no fields!" "Tabela asta nu are nici un cimp ?"
+"Your table has no columns!" "Tabela asta nu are nici un cimp ?"
"Height" "Înãlþime"
"File" "æÁÊÌ"
-"Your table has no fields!" "÷ ×ÁÛÅÊ ÔÁÂÌÉÃÅ ÎÅÔ ÐÏÌÅÊ!"
+"Your table has no columns!" "÷ ×ÁÛÅÊ ÔÁÂÌÉÃÅ ÎÅÔ ÐÏÌÅÊ!"
"Height" "÷ÙÓÏÔÁ"
"File" "Ôàéë"
-"Your table has no fields!" "Â Âàøåé òàáëèöå íåò ïîëåé!"
+"Your table has no columns!" "Â Âàøåé òàáëèöå íåò ïîëåé!"
"Height" "Âûñîòà"
"File" "Archivo"
-"Your table has no fields!" "¡La tabla no tiene campos!"
+"Your table has no columns!" "¡La tabla no tiene campos!"
"Height" "Alto"
wm title $base [intlmsg "About"]
label $base.l1 -borderwidth 3 -font -Adobe-Helvetica-Bold-R-Normal-*-*-180-*-*-*-*-* -relief ridge -text PgAccess
label $base.l2 -relief groove -text [intlmsg "A Tcl/Tk interface to\nPostgreSQL\nby Constantin Teodorescu"]
- label $base.l3 -borderwidth 0 -relief sunken -text {v 0.98.5}
+ label $base.l3 -borderwidth 0 -relief sunken -text {v 0.98.7}
label $base.l4 -relief groove -text "[intlmsg {You will always get the latest version at:}]
http://www.flex.ro/pgaccess
}
option add *Entry.background #fefefe
option add *Entry.foreground #000000
+ option add *Entry.Font $PgAcVar(pref,font_normal)
option add *Button.BorderWidth 1
}
}
set PgAcVar(schema,links) $links
drawLinks
+ foreach {ulx uly lrx lry} [.pgaw:Schema.c bbox all] {
+ wm geometry .pgaw:Schema [expr $lrx+30]x[expr $lry+30]
+ }
}
.pgaw:Schema.c lower rect
drawLinks
- .pgaw:Schema.c bind mov <Button-1> {Schema::dragStart %W %x %y}
+ .pgaw:Schema.c bind mov <Button-1> {Schema::dragStart %W %x %y %s}
.pgaw:Schema.c bind mov <B1-Motion> {Schema::dragMove %W %x %y}
bind .pgaw:Schema.c <ButtonRelease-1> {Schema::dragStop %x %y}
bind .pgaw:Schema <Button-1> {Schema::canvasClick %x %y %W}
proc {deleteObject} {} {
global PgAcVar
# Checking if there
-set obj [.pgaw:Schema.c find withtag hili]
-if {$obj==""} return
+set objs [.pgaw:Schema.c find withtag hili]
+set numobj [llength $objs]
+if {$numobj == 0 } return
# Is object a link ?
-if {[getTagInfo $obj link]=="s"} {
- if {[tk_messageBox -title [intlmsg Warning] -icon question -parent .pgaw:Schema -message [intlmsg "Remove link ?"] -type yesno -default no]=="no"} return
- set linkid [getTagInfo $obj lkid]
- set PgAcVar(schema,links) [lreplace $PgAcVar(schema,links) $linkid $linkid]
+foreach obj $objs {
+ if {[getTagInfo $obj link]=="s"} {
+ if {[tk_messageBox -title [intlmsg Warning] -icon question -parent .pgaw:Schema -message [intlmsg "Remove link ?"] -type yesno -default no]=="no"} return
+ set linkid [getTagInfo $obj lkid]
+ set PgAcVar(schema,links) [lreplace $PgAcVar(schema,links) $linkid $linkid]
+ .pgaw:Schema.c delete links
+ drawLinks
+ return
+ }
+ # Is object a table ?
+ set tablealias [getTagInfo $obj tab]
+ set tablename $PgAcVar(schema,tablename$tablealias)
+ if {"$tablename"==""} return
+ if {[tk_messageBox -title [intlmsg Warning] -icon question -parent .pgaw:Schema -message [format [intlmsg "Remove table %s from schema?"] $tablename] -type yesno -default no]=="no"} return
+ for {set i [expr [llength $PgAcVar(schema,links)]-1]} {$i>=0} {incr i -1} {
+ set thelink [lindex $PgAcVar(schema,links) $i]
+ if {($tablename==[lindex $thelink 0]) || ($tablename==[lindex $thelink 2])} {
+ set PgAcVar(schema,links) [lreplace $PgAcVar(schema,links) $i $i]
+ }
+ }
+ for {set i 0} {$i<$PgAcVar(schema,ntables)} {incr i} {
+ set temp {}
+ catch {set temp $PgAcVar(schema,tablename$i)}
+ if {"$temp"=="$tablename"} {
+ unset PgAcVar(schema,tablename$i)
+ unset PgAcVar(schema,tablestruct$i)
+ break
+ }
+ }
+ #incr PgAcVar(schema,ntables) -1
+ .pgaw:Schema.c delete tab$tablealias
.pgaw:Schema.c delete links
drawLinks
- return
-}
-# Is object a table ?
-set tablealias [getTagInfo $obj tab]
-set tablename $PgAcVar(schema,tablename$tablealias)
-if {"$tablename"==""} return
-if {[tk_messageBox -title [intlmsg Warning] -icon question -parent .pgaw:Schema -message [format [intlmsg "Remove table %s from query?"] $tablename] -type yesno -default no]=="no"} return
-for {set i [expr [llength $PgAcVar(schema,links)]-1]} {$i>=0} {incr i -1} {
- set thelink [lindex $PgAcVar(schema,links) $i]
- if {($tablealias==[lindex $thelink 0]) || ($tablealias==[lindex $thelink 2])} {
- set PgAcVar(schema,links) [lreplace $PgAcVar(schema,links) $i $i]
}
}
-for {set i 0} {$i<$PgAcVar(schema,ntables)} {incr i} {
- set temp {}
- catch {set temp $PgAcVar(schema,tablename$i)}
- if {"$temp"=="$tablename"} {
- unset PgAcVar(schema,tablename$i)
- unset PgAcVar(schema,tablestruct$i)
- break
- }
-}
-#incr PgAcVar(schema,ntables) -1
-.pgaw:Schema.c delete tab$tablealias
-.pgaw:Schema.c delete links
-drawLinks
-}
proc {dragMove} {w x y} {
set dx [expr $x - $PgAcVar(draginfo,x)]
set dy [expr $y - $PgAcVar(draginfo,y)]
if {$PgAcVar(draginfo,is_a_table)} {
- $w move $PgAcVar(draginfo,tabletag) $dx $dy
+ $w move dragme $dx $dy
drawLinks
} else {
$w move $PgAcVar(draginfo,obj) $dx $dy
}
-proc {dragStart} {w x y} {
+proc {dragStart} {w x y state} {
global PgAcVar
PgAcVar:clean draginfo,*
set PgAcVar(draginfo,obj) [$w find closest $x $y]
set taglist [.pgaw:Schema.c gettags $PgAcVar(draginfo,obj)]
set PgAcVar(draginfo,tabletag) [lindex $taglist [lsearch -regexp $taglist "^tab\[0-9\]*"]]
.pgaw:Schema.c raise $PgAcVar(draginfo,tabletag)
- .pgaw:Schema.c itemconfigure [.pgaw:Schema.c find withtag hili] -fill black
- .pgaw:Schema.c dtag [.pgaw:Schema.c find withtag hili] hili
+ if {$state == 0} {
+ .pgaw:Schema.c itemconfigure hili -fill black
+ .pgaw:Schema.c dtag hili
+ .pgaw:Schema.c dtag dragme
+ }
+ .pgaw:Schema.c addtag dragme withtag $PgAcVar(draginfo,tabletag)
.pgaw:Schema.c addtag hili withtag $PgAcVar(draginfo,obj)
.pgaw:Schema.c itemconfigure hili -fill blue
} else {
# Re-establish the normal paint order so
# information won't be overlapped by table rectangles
# or link lines
-.pgaw:Schema.c lower $PgAcVar(draginfo,obj)
+if {$PgAcVar(draginfo,is_a_table)} {
+ .pgaw:Schema.c lower $PgAcVar(draginfo,tabletag)
+} else {
+ .pgaw:Schema.c lower $PgAcVar(draginfo,obj)
+}
.pgaw:Schema.c lower rect
.pgaw:Schema.c lower links
set PgAcVar(schema,panstarted) 0
# Source object is on the left of target object
set x1 $sre
set y1 [expr ([lindex $sbbox 1]+[lindex $sbbox 3])/2]
- .pgaw:Schema.c create line $x1 $y1 [expr $x1+10] $y1 \
- -tags [subst {links lkid$i}] -width 3
set x2 [lindex $dbbox 0]
set y2 [expr ([lindex $dbbox 1]+[lindex $dbbox 3])/2]
- .pgaw:Schema.c create line [expr $x2-10] $y2 $x2 $y2 \
- -tags [subst {links lkid$i}] -width 3
- .pgaw:Schema.c create line [expr $x1+10] $y1 [expr $x2-10] $y2 \
- -tags [subst {links lkid$i}] -width 2
+ .pgaw:Schema.c create line $x1 $y1 [expr $x1+10] $y1 \
+ [expr $x1+10] $y1 [expr $x2-10] $y2 \
+ [expr $x2-10] $y2 $x2 $y2 \
+ -tags [subst {links lkid$i}] -width 2
} else {
# source object is on the right of target object
set x1 [lindex $sbbox 0]
set y1 [expr ([lindex $sbbox 1]+[lindex $sbbox 3])/2]
- .pgaw:Schema.c create line $x1 $y1 [expr $x1-10] $y1 \
- -tags [subst {links lkid$i}] -width 3
set x2 $dre
set y2 [expr ([lindex $dbbox 1]+[lindex $dbbox 3])/2]
- .pgaw:Schema.c create line $x2 $y2 [expr $x2+10] $y2 -width 3 \
- -tags [subst {links lkid$i}]
- .pgaw:Schema.c create line [expr $x1-10] $y1 [expr $x2+10] $y2 \
- -tags [subst {links lkid$i}] -width 2
+ .pgaw:Schema.c create line $x1 $y1 [expr $x1-10] $y1 \
+ [expr $x1-10] $y1 [expr $x2+10] $y2 \
+ $x2 $y2 [expr $x2+10] $y2 \
+ -tags [subst {links lkid$i}] -width 2
}
incr i
}
global PgAcVar
set obj [.pgaw:Schema.c find closest $x $y 1 links]
if {[getTagInfo $obj link]!="s"} return
- .pgaw:Schema.c itemconfigure [.pgaw:Schema.c find withtag hili] -fill black
- .pgaw:Schema.c dtag [.pgaw:Schema.c find withtag hili] hili
+ .pgaw:Schema.c itemconfigure hili -fill black
+ .pgaw:Schema.c dtag hili
.pgaw:Schema.c addtag hili withtag $obj
.pgaw:Schema.c itemconfigure $obj -fill blue
}
set PgAcVar(schema,panobject) tables
if {$canpan} {
if {[.pgaw:Schema.c find withtag hili]!=""} {
- .pgaw:Schema.c itemconfigure [.pgaw:Schema.c find withtag hili] -fill black
- .pgaw:Schema.c dtag [.pgaw:Schema.c find withtag hili] hili
+ .pgaw:Schema.c itemconfigure hili -fill black
+ .pgaw:Schema.c dtag hili
}
.pgaw:Schema configure -cursor hand1
toplevel $base -class Toplevel
wm focusmodel $base passive
wm geometry $base 759x530+10+13
- wm maxsize $base 1280 1024
+ wm maxsize $base [winfo screenwidth .] [winfo screenheight .]
wm minsize $base 1 1
wm overrideredirect $base 0
wm resizable $base 1 1
entry $base.f.esn \
-background #fefefe -borderwidth 1 -textvariable PgAcVar(schema,name)
label $base.f.lsn -text [intlmsg {Schema name}]
- place $base.c -x 5 -y 30 -width 748 -height 500 -anchor nw -bordermode ignore
- place $base.f \
- -x 5 -y 5 -width 748 -height 25 -anchor nw -bordermode ignore
pack $base.f.l \
-in .pgaw:Schema.f -anchor center -expand 0 -fill none -side left
pack $base.f.e \
pack $base.f.lsn \
-in .pgaw:Schema.f -anchor center -expand 0 -fill none -side right
+ pack $base.f -side top -anchor ne -expand 0 -fill x
+ pack $base.c -side bottom -fill both -expand 1
}
focus .pgaw:NewTable.etabn
return
}
-if {[.pgaw:NewTable.lb size]==0} then {
- showError [intlmsg "Your table has no fields!"]
+if {([.pgaw:NewTable.lb size]==0) && ($PgAcVar(nt,inherits)=="")} then {
+ showError [intlmsg "Your table has no columns!"]
focus .pgaw:NewTable.e2
return
}
-#! /bin/sh
+#!/bin/sh
PATH_TO_WISH='@WISH@'
PGACCESS_HOME='@PGACCESSHOME@'