debian/0000755000000000000000000000000012076640063007172 5ustar debian/source/0000755000000000000000000000000012076627410010473 5ustar debian/source/format0000644000000000000000000000001412076627410011701 0ustar 3.0 (quilt) debian/copyright0000644000000000000000000000206012076624702011125 0ustar This package was debianized by Jorge Bernal on Mon, 23 May 2005 22:58:21 +0200. It was downloaded from http://www.nongnu.org/gerwin/project/what.html Copyright Holder: Jose E. Marchesi License: This package is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This package is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this package; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. On Debian systems, the complete text of the GNU General Public License can be found in `/usr/share/common-licenses/GPL'. debian/TODO0000644000000000000000000000003512076624702007662 0ustar * Package bwidget separately debian/patches/0000755000000000000000000000000012076636450010626 5ustar debian/patches/series0000644000000000000000000000002412076632313012031 0ustar 01_fix_patchs.patch debian/patches/01_fix_patchs.patch0000644000000000000000000010171712076636450014306 0ustar Index: ferret-0.6/ferret =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ ferret-0.6/ferret 2013-01-20 01:20:43.310620730 +0100 @@ -0,0 +1,2 @@ +#!/usr/bin/wish +source /usr/share/ferret/ferret.tcl Index: ferret-0.6/ferret.bat =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ ferret-0.6/ferret.bat 2013-01-20 01:20:43.310620730 +0100 @@ -0,0 +1 @@ +wishrun.exe ferret.tcl Index: ferret-0.6/ferretml/gerwinml.dtd =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ ferret-0.6/ferretml/gerwinml.dtd 2013-01-20 01:20:43.310620730 +0100 @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: ferret-0.6/gerwin.bat =================================================================== --- ferret-0.6.orig/gerwin.bat 2013-01-20 01:08:53.219547785 +0100 +++ /dev/null 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -wishrun.exe gerwin.tcl Index: ferret-0.6/gerwinml/gerwinml.dtd =================================================================== --- ferret-0.6.orig/gerwinml/gerwinml.dtd 2013-01-20 01:08:53.219547785 +0100 +++ /dev/null 1970-01-01 00:00:00.000000000 +0000 @@ -1,98 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Index: ferret-0.6/gerwin =================================================================== --- ferret-0.6.orig/gerwin 2013-01-20 01:08:53.219547785 +0100 +++ /dev/null 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -#!/usr/bin/wish -source src/gerwin.tcl Index: ferret-0.6/src/ferret.tcl =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ ferret-0.6/src/ferret.tcl 2013-01-20 01:21:14.414229704 +0100 @@ -0,0 +1,914 @@ +;# gerwin.tcl -- Gerwin +;# +;# Main file. +;# +;# Copyright (C) Jose E. Marchesi +;# +;# Time-stamp: "2003-11-11 15:16:30 jemarch" + +;# This program is free software; you can redistribute it and/or +;# modify it under the terms of the GNU General Public License as +;# published by the Free Software Foundation; either version 2 of +;# the License, or (at your option) any later version. + +;# This program is distributed in the hope that it will be useful, +;# but WITHOUT ANY WARRANTY; without even the implied warranty of +;# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;# GNU General Public License for more details. + +;# You should have received a copy of the GNU General Public +;# License along with this program; if not, write to the Free +;# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, +;# MA 02111-1307 USA + + + + +;# +;# gerwin_init +;# +;# Initializes gerwin + + +proc gerwin_init {} { + + ;# Initialize the gui + gui_init .gerwin + + ;# Initialize the bitmap library + ;#Bitmap::_init + + + ;# Set the initial state: Moving + ;#gerwin_set_state Editing + +} + + +;# +;# gerwin_set_state STATE +;# +;# Set STATE as the new STATE for gerwin + +proc gerwin_set_state {state} { + + global gmainframe + global gerwin_state + global gcanvas + + set userframe [${gmainframe} getframe] + + set gerwin_state $state + gui_change_state $state + + + ;# Change the bindings if necessary + switch $state { + + + "Inserting entity" - + "Inserting label" { + + ;# Destroy the binding on all the canvas objects + ${gcanvas} bind all {} + ;# Bind on the entire widget + bind ${gcanvas} {gui_mark %x %y} + } + + default { + ;# Destroy the binding on the canvas + bind ${gcanvas} {} + + ;# Bind on all the canvas elements + gui_launch_bindings + + } + } +} + + +;# +;# gerwin_quit +;# +;# Quits Gerwin + +proc gerwin_quit {} { + + exit + +} + + +;# +;# gerwin_print_TD +;# +;# Print the gcanvas_td into a postscript file + +proc gerwin_print_TD {} { + + global gcanvas_td + + ;# Get the file where put the postscrip + + set filetypes {{"PostScript" {.ps}}} + + set f [tk_getSaveFile -initialdir "." \ + -filetypes $filetypes -title "Print to a PostScript file"] + + ;# Switch over the result + switch $f { + + "" { + ;# Do nothing + return + } + default { + ;# Put the .ps suffix if it is not done + if {! [string match "*.ps" $f] } then { + append f ".ps" + } + ;# Ok, save the postscript into f + ;# Get the bounding box + set bbox [${gcanvas_td} bbox all] + set x [lindex $bbox 0] + set y [lindex $bbox 1] + set height [lindex $bbox 3] + set width [lindex $bbox 2] + + ${gcanvas_td} postscript -file $f -colormode color \ + -pageanchor c -width $width -height $height \ + -x $x -y $y + + + + } + } + +} + + +;# +;# gerwin_print_ER +;# +;# Print the gcanvas into a postscript file + +proc gerwin_print_ER {} { + + global gcanvas + + ;# Get the file where put the postscrip + + set filetypes {{"PostScript" {.ps}}} + + set f [tk_getSaveFile -initialdir "." \ + -filetypes $filetypes -title "Print to a PostScript file"] + + ;# Switch over the result + switch $f { + + "" { + ;# Do nothing + return + } + default { + ;# Put the .ps suffix if it is not done + if {! [string match "*.ps" $f] } then { + append f ".ps" + } + + ;# Ok, save the postscript into f + ;# Get the bounding box + set bbox [${gcanvas} bbox all] + set x [lindex $bbox 0] + set y [lindex $bbox 1] + set height [lindex $bbox 3] + set width [lindex $bbox 2] + + ${gcanvas} postscript -file $f -colormode color \ + -pageanchor c -width $width -height $height \ + -x $x -y $y + + + } + } + +} + + +;# +;# gerwin_save_sql +;# +;# Saves the current SQL on a file + +proc gerwin_save_sql {} { + + global gmainframe + global gerwin_cproject_sqlfile + global gtext_sql + + if {($gerwin_cproject_sqlfile == "none")} then { + + MessageDlg ${gmainframe}.notice -title "Saving project" \ + -message "You must assign a SQL file to the project before saving it!" \ + -type ok + + return + + } + + set res [MessageDlg ${gmainframe}.notice -title "Saving SQL" \ + -message "Are you sure you want to save the SQL listing into ${gerwin_cproject_sqlfile}?" \ + -type yesno] + + switch $res { + + 0 { + ;# Yes, save it + set fout [open ${gerwin_cproject_sqlfile} w] + puts $fout [${gtext_sql} get 1.0 end] + close $fout + } + 1 { + ;# No + return + } + + } + +} + + + +;# +;# gerwin_save_project +;# +;# Project saving dialog + +proc gerwin_save_project {} { + + global gmainframe + global gerwin_cproject_name + global gerwin_cproject_file + + if {($gerwin_cproject_file == "none") || ($gerwin_cproject_file == "")} then { + + MessageDlg ${gmainframe}.notice -title "Saving project" \ + -message "You must assign a file to the project before saving it!" \ + -type ok + + return + + } + + set res [MessageDlg ${gmainframe}.notice -title "Saving project" \ + -message "Are you sure you want to save $gerwin_cproject_name into ${gerwin_cproject_file}?" \ + -type yesno] + + switch $res { + + 0 { + ;# Yes, save it + gerwin_save_project_file + } + 1 { + ;# No + return + } + + } + +} + + +;# +;# gerwin_get_default_project_name +;# + +proc gerwin_get_default_project_name {} { + + global gerwin_project_counter + + return "Project$gerwin_project_counter" + + incr gerwin_project_counter +} + +;# +;# gerwin_close_project +;# +;# Closes the current project + +proc gerwin_close_project {} { + + global gerwin_cproject_name + global gmainframe + + global gcanvas + global gcanvas_td + + ;# Do nothing if there is not any project open + if {${gerwin_cproject_name} == "none"} then { + return + } + + ;# Make sure we want to close the project + set res [MessageDlg ${gmainframe}.notice -title "Closing the project" \ + -message "Are you sure you want to close ${gerwin_cproject_name}?" \ + -type yesno] + + switch $res { + + 0 { + ;# Yes, close it + gerwin_purge_project + + ;# Disable some buttons + gui_no_project_opened + + ;# Resize the canvas +# ${gcanvas} configure -scrollregion {} +# ${gcanvas_td} configure -scrollregion {} + + } + 1 { + ;# No, coward + return + } + + } + +} + + +;# +;# gerwin_open_project +;# +;# Select a project file and then make that project the current one + +proc gerwin_open_project {} { + + global gmainframe + global gerwin_cproject_name + + ;# Warning if there is another project opened + if {$gerwin_cproject_name != "none"} then { + + set res [MessageDlg ${gmainframe}.notice -title "Open a new project?" \ + -message "There is another project opened. You must close it and then open a new one." \ + -type ok] + return + } + + + set filetypes {{"Gerwin Project" {.ger}}} + set f [tk_getOpenFile -initialdir "." \ + -filetypes $filetypes -title "Open a gerwin file"] + + ;# switch over the result + switch $f { + + "" { + ;# Do nothing + return + } + default { + + + ;# Now we can edit + gui_project_opened + + ;# Load the project from $f + gerwin_load_project_file $f + + } + + } + + +} + + +;# +;# gerwin_purge_project +;# +;# Purges all the gerwin state + +proc gerwin_purge_project {} { + + global gerwin_entities + global gerwin_relations + global gerwin_tables + global gerwin_cproject_name + global gerwin_cproject_file + global gerwin_cproject_sqlfile + global gerwin_cproject_author + global gerwin_entity_seq + global gerwin_output_active_format + + global output_pages + + + set gerwin_cproject_name none + set gerwin_cproject_file none + set gerwin_cproject_author none + + set gerwin_entity_seq 1 + + + ;# Purge all relations + foreach r $gerwin_relations { + + gob_delete_relation $r + gm_delete_relation $r + gui_edition_area_delete_page $r + + + } + + set gerwin_relations {} + + ;# Purge all entities + foreach e $gerwin_entities { + + gob_delete_entity $e + gm_delete_entity $e + gui_edition_area_delete_page $e + + } + + set gerwin_entities {} + + ;# Purge all tables + foreach t $gerwin_tables { + + gob_delete_table $t + gm_delete_table $t + } + + set gerwin_tables {} + + + ;# Purge project variables + set gerwin_cproject_file none + set gerwin_cproject_sqlfile none + + ;# Purge the output pages + foreach op $output_pages { + + gui_destroy_output_page $op + + } + + ;# Destroy the app area Domain page + ;#gui_app_area_destroy_Domain_page + ;# Destroy the app area Project page + gui_app_area_destroy_Project_page + + ;# Destroy the rest of the app areas + gui_app_area_destroy_Output_page + gui_app_area_destroy_TD_page + gui_app_area_destroy_ER_page + + ;# Delete the active format + set gerwin_output_active_format {} +} + + +;# +;# gerwin_save_output_file FORMAT +;# +;# Save the FORMAT output to a file + +proc gerwin_save_output_file {format} { + + global gmainframe + global gtext_output + + set filename [tk_getSaveFile -initialdir "." \ + -title "Saving an output file"] + + ;# Switch over the result + switch $filename { + + "" { + ;# Do nothing + return + + } + + default { + + ;# Make sure we want to save + set res [MessageDlg ${gmainframe}.notice -title "Saving SQL" \ + -message "Are you sure you want to save this $format output into ${filename}?" \ + -type yesno] + + switch $res { + + 0 { + ;# Yes, save it + set fout [open ${filename} w] + puts $fout [$gtext_output($format) get 1.0 end] + close $fout + + } + 1 { + ;# No + return + + } + } + + } + } +} + + +;# +;# gerwin_new_project +;# +;# Creates a new project, named after the project count + +proc gerwin_new_project {} { + + global gerwin_cproject_name + global gerwin_cproject_file + global gerwin_cproject_author + + global gcanvas + + ;# Make sure the user really want to get a new project + if {$gerwin_cproject_name != "none"} then { + + set answer [gui_yes_no_cancel "Another project is already opened.\nAre you sure \ +you want to discard the old project and start another one?"] + + + switch $answer { + + 0 { + ;# Purge the old project + gerwin_purge_project + + } + + 1 - + 2 { + + return + } + + } + + } + + + ;# Set the default values for project attributes + set gerwin_cproject_name [gerwin_get_default_project_name] + set gerwin_cproject_file none + set gerwin_cproject_author "Anonymous GNUdist" + + + + ;# Activate the buttons + gui_project_opened + + ;# Scale the canvas + ${gcanvas} configure -scrollregion {0 0 1024 768} + +} + + +;# +;# gerwin_load_project_file FILENAME +;# +;# Load a project from FILENAME + +proc gerwin_load_project_file {filename} { + + global gerwin_cproject_name + global gerwin_cproject_file + global gerwin_cproject_author + + global gerwin_entities + global gerwin_relations + global gerwin_entity + global gerwin_relation + + global gm_entity + global gm_relation + + global gerwin_relation_seq + global gerwin_entity_seq + + global gcanvas + + + ;# Open the input channel + ;# We suppose the file exist + set fin [open $filename r] + + ;## + ;## Load in project information + ;## + + gets $fin gerwin_cproject_name + gets $fin gerwin_cproject_file + gets $fin gerwin_cproject_author + gets $fin gerwin_entity_seq + gets $fin gerwin_relation_seq + + ;## + ;## Load canvas information + ;## + gets $fin sreg + ${gcanvas} configure -scrollregion $sreg + + + ;## + ;## Load entity information + ;## + + gets $fin numentities + + for {set x 0} {$x < $numentities} {incr x} { + + gets $fin ename ;# Entity name + + + gets $fin xpos ;# Get geometry information + gets $fin ypos + + gob_create_entity $ename {} {} {} ;# Create the entity + + ;# Load in the attributes + gets $fin numattributes + + for {set y 0} {$y < $numattributes} {incr y} { + + gets $fin aline ;# Read the attribute line + + ;# Add the new attribute to the entity + gob_entity_add_attribute $ename [lindex $aline 0] [lindex $aline 1] + + } + + ;# Load in the keys + gets $fin numkeys + for {set y 0} {$y < $numkeys} {incr y} { + + gets $fin key ;# Read the key + + ;# Add the key to the entity + gob_entity_add_attribute_to_key $ename $key + } + + + ;# Load in the relations + gets $fin numrelations + for {set y 0} {$y < $numrelations} {incr y} { + + gets $fin relation ;# Read the relation + + ;# Add the relation to the entity + gob_entity_add_relation $ename $relation + + } + + ;# Ok, draw the entity + gm_draw_entity $ename $xpos $ypos + } + + ;## + ;## Load in the relations + ;## + + gets $fin numrelations + + for {set x 0} {$x < $numrelations} {incr x} { + + gets $fin rname ;# Relation name + gets $fin temp_reflexive ;# Reflexive relation? + + gets $fin xpos ;# Geometry information + gets $fin ypos + + ;# Create the relation + gob_create_relation $rname {} {} + set gerwin_relation($rname,reflexive) $temp_reflexive + + ;# Load in the attributes + gets $fin numattributes ;# Number of attributes + + for {set y 0} {$y < $numattributes} {incr y} { + + gets $fin aline ;# Read the attribute line + + gob_relation_add_attribute $rname [lindex $aline 0] [lindex $aline 1] + } + + ;# Load in the entities + gets $fin numentities ;# Number of entities + + for {set y 0} {$y < $numentities} {incr y} { + + gets $fin ename ;# Entity name + gets $fin emincard ;# Entity minimal cardinality + gets $fin emaxcard ;# Entity maximal cardinality + + gob_relation_add_entity $rname $ename $emincard $emaxcard + + } + + ;# Ok, draw the relation + gm_draw_relation $rname $xpos $ypos + + if {$gerwin_relation($rname,reflexive)} then { + gm_relation_update_links_reflexive $rname + } else { + gm_relation_update_links $rname + } + + } + + ;# Set some internal state + + ;#set gerwin_entity_seq [expr $numentities] + ;#set gerwin_relation_seq [expr $numrelations] + +} + + +;# +;# gerwin_save_project_file +;# +;# Save the current project + +proc gerwin_save_project_file {} { + + global gerwin_cproject_name + global gerwin_cproject_file + global gerwin_cproject_author + + global gerwin_entities + global gerwin_relations + global gerwin_entity + global gerwin_relation + + global gm_entity + global gm_relation + + global gerwin_entity_seq + global gerwin_relation_seq + + global gcanvas + + ;# Open the out channel + ;# We suposse the file exist + set filename $gerwin_cproject_file + set fout [open $filename w] + + + ;## + ;## Write out project information + ;## + + puts $fout $gerwin_cproject_name + puts $fout $gerwin_cproject_file + puts $fout $gerwin_cproject_author + puts $fout $gerwin_entity_seq + puts $fout $gerwin_relation_seq + + ;## + ;## Write out canvas size information + ;## + set sreg [${gcanvas} cget -scrollregion] + puts $fout $sreg + + + ;## + ;## Write out entity information + ;## + + set nentities [llength $gerwin_entities] + + puts $fout $nentities ;# Number of entities + + foreach e $gerwin_entities { + + puts $fout $e ;# Entity name + + ;# Geometry attributes + puts $fout $gm_entity($e,xpos) + puts $fout $gm_entity($e,ypos) + + set nattributes [llength $gerwin_entity($e,attributes)] + puts $fout $nattributes ;# Number of attributes + + foreach a $gerwin_entity($e,attributes) { + + puts $fout $a ;# Attributes + + } + + set nkeys [llength $gerwin_entity($e,key)] + puts $fout $nkeys ;# Number of key attributes + + foreach k $gerwin_entity($e,key) { + + puts $fout $k ;# Keys + + } + + set nrelations [llength $gerwin_entity($e,relations)] + puts $fout $nrelations ;# Number of relations + + foreach r $gerwin_entity($e,relations) { + + puts $fout $r ;# Relations + + } + + } + + ;# Output relations + + set nrelations [llength $gerwin_relations] + puts $fout $nrelations ;# Number of relations + + foreach r $gerwin_relations { + + puts $fout $r ;# Relation name + puts $fout $gerwin_relation($r,reflexive) ;# It is a reflexive relation? + + ;# Output geometry information + puts $fout $gm_relation($r,xpos) + puts $fout $gm_relation($r,ypos) + + set nattributes [llength [gob_relation_get_attributes $r]] + puts $fout $nattributes ;# Number of attributes + + foreach a [gob_relation_get_attributes $r] { + + puts $fout $a + + } + + set nentities [llength [gob_relation_get_entities $r]] + puts $fout $nentities ;# Number of entities + + foreach e [gob_relation_get_entities $r] { + + set e [lindex $e 0] + puts $fout $e ;# Entity name + puts $fout [gob_relation_get_entity_min_card $r $e] ;# Entity min card + puts $fout [gob_relation_get_entity_max_card $r $e] ;# Entity max card + + } + + + } + + close $fout +} + + + +;##### Load external packages + +lappend auto-path [file join /usr share ferret widgets] + +puts "Loading external megawidget libraries:" +puts "" + +puts " BWidget 1.6" +lappend auto_path [file join . widgets bwidget] +package require BWidget 1.6 + +puts " Icons 1.0" +lappend auto_path [file join /usr share ferret widgets icons] +package require icons 1.0 + + +puts " Tablelist 2.7" +lappend auto_path [file join /usr share ferret widgets tablelist] +package require Tablelist 2.7 + +puts "" +;###### Done loading libraries + + +source /usr/share/ferret/globals.tcl +source /usr/share/ferret/gob.tcl +source /usr/share/ferret/gui.tcl +source /usr/share/ferret/gm.tcl +source /usr/share/ferret/gen.tcl +source /usr/share/ferret/postgresql.tcl +source /usr/share/ferret/mysql.tcl +source /usr/share/ferret/sql92.tcl +source /usr/share/ferret/ferretml.tcl + + +;# Ok, start! +gerwin_init + Index: ferret-0.6/src/ferretml.tcl =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ ferret-0.6/src/ferretml.tcl 2013-01-20 01:21:14.414229704 +0100 @@ -0,0 +1,264 @@ +;# gerwinml.tcl -- Gerwin +;# +;# GerwinML tables generation routine +;# +;# Copyright (C) Jose E. Marchesi +;# +;# Time-stamp: "2003-07-10 19:09:13 jemarch" + + +;# This program is free software; you can redistribute it and/or +;# modify it under the terms of the GNU General Public License as +;# published by the Free Software Foundation; either version 2 of +;# the License, or (at your option) any later version. + +;# This program is distributed in the hope that it will be useful, +;# but WITHOUT ANY WARRANTY; without even the implied warranty of +;# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;# GNU General Public License for more details. + +;# You should have received a copy of the GNU General Public +;# License along with this program; if not, write to the Free +;# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, +;# MA 02111-1307 USA + + + +;# Register the format +lappend gerwin_output_formats GerwinML + +;# Set the color scheme for this output format +set output_colors(GerwinML) { + + {{} red} + + {{<[a-zA-Z_]+} blue} + {{} blue} + {{/>} blue} + {{=} blue} + {{\".*?\"} orange} + +} + +;# Set the type scheme for this output format + +set gerwin_output_format_types(GerwinML) { + + {{DYNAMIC_STRING(%d)} {DYNAMIC_STRING(%d)}} + {{FIXED_STRING(%d)} {FIXED_STRING(%d)}} + {INTEGER INTEGER} + {FLOAT FLOAT} + {NATURAL INTEGER} + {CHARACTER CHARACTER} +} + + + +;# The generation routine + +proc gen_TD_to_format_GerwinML {} { + + global gerwin_cproject_name + global gerwin_cproject_author + global gerwin_cproject_file + global gerwin_output_active_format + global gerwin_tables + global gerwin_table + + ;# Ok, generate the GerwinML + omit_line "" + omit_line "" + omit_line " " + omit_line "" + omit_line " " + ;# Iterate on the tables + foreach t $gerwin_tables { + + set table_name $t + + ;# Some blank space before each table + omit_line "" + omit_line "" + + omit_line " " + omit_line "" + + ;# Emit the table attributes + omit_line " " + omit_line "" + + set nattributes [gob_table_get_nattributes $t] + set i 0 + foreach a [gob_table_get_attributes $t] { + incr i + + ;# See if the name contain any % + ;# If it is the case, then this is a repeated foreign key + ;# and the name in gob_table_get_foreign_keys is without the #! + + if {[regexp \% $a]} then { + + ;# Convert the # to an underscore + set nname [string map {% _} $a] + + } else { + set nname $a + } + + ;# Write the attribute name and the attribute domain + append line " " + + ;# Ok, omit the line + omit_line $line + set line {} + } + + omit_line "" + omit_line " " + + + ;# Now, emit the table restrictions + omit_line "" + + ;# Begin of table restrictions + omit_line "" + omit_line " " + + ;# Begin of primary key + omit_line "" + omit_line " " + + ;# Begin of primary_key_attributes + omit_line " " + + ;# Generate primary key attributes + omit_line "" + foreach a [gob_table_get_key $t] { + ;# Obtain the original name + ;#regsub {.+%([^%]+)} $a "\\1" a + set a [string map "% _" $a] + omit_line " " + } + + omit_line "" + omit_line " " + ;# End of primary_key_attributes + + omit_line " " + ;# End of primary key + + ;# Begin of not_nulleable + omit_line "" + omit_line " " + + ;# Begin of not_nulleable_attributes + omit_line " " + + ;# Generate not-nulleable attributes + omit_line "" + foreach a [gob_table_get_attributes $t] { + if {![gob_table_get_attribute_null $t $a]} then { + ;# Normalize the name + ;#regsub {.+%([^%]+)} $a "\\1" a + set a [string map "% _" $a] + + omit_line " " + } + } + + + omit_line "" + omit_line " " + ;# End of not _nulleable_attributes + + omit_line "" + omit_line " " + ;# End of not_nulleable + + ;# Begin of foreign_keys + omit_line "" + omit_line " " + omit_line "" + + ;# Generate foreign_key elements + set rtables {} + foreach fkd [gob_table_get_foreign_keys $t] { + + set rtable [lindex $fkd 1] + + if {[lsearch $rtables $rtable] == -1} then { + lappend rtables $rtable + } + } + ;# Ok, now we have all the rtables into $rtables + + foreach rtable $rtables { + + ;# Begin of foreign_key + omit_line " " + omit_line "" + + ;# Begin of foreign_key_attributes + omit_line " " + omit_line "" + + ;# Emit the foreign keys for this rtable + foreach a [gob_table_get_attributes $t] { + + ;# Get the remote name for the attribute + regsub {.+%([^%]+)} $a "\\1" nname + set nname [string map "% _" $nname] + + + if {[gob_table_is_foreign_key $t $a]} then { + + + ;# Get the foreign key for the attribute + set art [gob_table_get_foreign_key_rtable $t $a] + + if {$art == $rtable} then { + + set a [string map "% _" $a] + ;# Begin foreign_key_attribute + omit_line " " + + } + } + } + + + omit_line "" + omit_line " " + ;# End of foreign_key_attributes + + omit_line "" + omit_line " " + ;# End of foreign_key + omit_line "" + + } + + + omit_line "" + omit_line " " + ;# End of foreign_keys + + omit_line "" + omit_line " " + ;# End of table restrictions + + omit_line "" + omit_line "
" + omit_line "" + + } + + omit_line "
" + omit_line "" + omit_line "
" + omit_line "" + omit_line "
" +} + \ No newline at end of file Index: ferret-0.6/src/gui.tcl =================================================================== --- ferret-0.6.orig/src/gui.tcl 2013-01-20 01:05:17.238263036 +0100 +++ ferret-0.6/src/gui.tcl 2013-01-20 01:41:05.699253841 +0100 @@ -118,7 +118,7 @@ set gmainframe ${widget} ;# Title - wm title . "Gerwin $gerwin_version" + wm title . "Ferret $gerwin_version" ;# Create the fonts gui_create_fonts @@ -127,7 +127,7 @@ MainFrame ${gmainframe} -separator both \ -textvariable gerwin_state -menu [gui_create_mainmenu] - ${gmainframe} addindicator -text "Tcl Gerwin" + ${gmainframe} addindicator -text "Tcl Ferret" ${gmainframe} addindicator -text $gerwin_version ;# Create the button-area @@ -922,9 +922,9 @@ ;# Prepare the menu set mainmenu { - "&Gerwin" {} {} 0 { + "&Ferret" {} {} 0 { {separator} - {command "&Exit Gerwin" {} "exit the application" {Ctrl e} -command gerwin_quit} + {command "&Exit Ferret" {} "exit the application" {Ctrl e} -command gerwin_quit} } "&Project" {} {} 0 { debian/ferret.manpages0000644000000000000000000000002012076627365012200 0ustar debian/ferret.1 debian/dirs0000644000000000000000000000003112076624702010052 0ustar usr/share/gerwin usr/bin debian/ferret.sharedmimeinfo0000644000000000000000000000043712076624702013403 0ustar Ferret project debian/watch0000644000000000000000000000007512076627565010241 0ustar version=3 http://ftp.gnu.org/gnu/ferret/ferret-(.+)\.tar\.gz debian/changelog0000644000000000000000000000414512076640063011050 0ustar ferret (0.6-4) unstable; urgency=low * QA upload. * Change maintainer to QA Group. * debian/ cleanup: - Move Homepage from description to own field and update URL (Closes: #615466) - Fixed typo in description. From Ubuntu patch by Murat Gunes. (LP: #189463) - Bump debhelper compat to 9. - Convert from cdbs/simple-patchsys to dh/3.0 (quilt) - Really add debian/watch - Update menu section -- Frank Lichtenheld Sun, 20 Jan 2013 01:54:02 +0100 ferret (0.6-3) unstable; urgency=low * Add Suggest PostgreSQL or Mysql in debian/control * Add Build-Dependes-Indep in debian/control * Add debian/watch -- Fernando Ike de Oliveira Sat, 29 Jul 2006 00:05:59 -0300 ferret (0.6-2) unstable; urgency=medium * Fix missing dependency bwidget. (Closes: #375356) * Fix long description. (Closes: #375321) * Fix grammar in description. (Closes: #375320) * Create entrered in the menu. -- Fernando Ike de Oliveira Thu, 29 Jun 2006 15:37:16 -0300 ferret (0.6-1) unstable; urgency=low * Port of the packaging from Ubuntu to Debian * Add man page * change name to ferret -- Fernando Ike de Oliveira Tue, 7 Feb 2006 22:45:12 -0200 gerwin (0.6-0ubuntu5) breezy; urgency=low * Add support for opening files from command line. -- Jorge Bernal Tue, 14 Jun 2005 22:25:09 +0200 gerwin (0.6-0ubuntu4) breezy; urgency=low * Fix _ fields in .desktop file. -- Jorge Bernal Tue, 14 Jun 2005 22:05:32 +0200 gerwin (0.6-0ubuntu3) breezy; urgency=low * Actually copy the .desktop file to /usr/share/applications. * Install gerwin to correct location. -- Jorge Bernal Tue, 14 Jun 2005 21:35:38 +0200 gerwin (0.6-0ubuntu2) breezy; urgency=low * Register application/x-gerwin MIME-type at installation. * New .desktop file. -- Jorge Bernal Tue, 14 Jun 2005 21:23:23 +0200 gerwin (0.6-0ubuntu1) breezy; urgency=low * Initial Release. -- Jorge Bernal Mon, 23 May 2005 22:58:21 +0200 debian/ferret.menu0000644000000000000000000000025212076633410011344 0ustar ?package(ferret):needs="x11" \ section="Applications/Programming" \ title="Ferret" \ longtitle="CASE tool for data model editing" \ command="/usr/bin/ferret" debian/docs0000644000000000000000000000003512076634352010047 0ustar BUGS NEWS README TODO THANKS debian/ferret.install0000644000000000000000000000016012076630153012045 0ustar src/* usr/share/ferret/ widgets usr/share/ferret/ ferret usr/bin/ debian/ferret.desktop usr/share/applications/ debian/control0000644000000000000000000000114612076633145010602 0ustar Source: ferret Section: misc Priority: optional Maintainer: Debian QA Group Build-Depends: debhelper (>= 9~) Build-Depends-Indep: devscripts Standards-Version: 3.7.2 Homepage: https://www.gnu.org/software/ferret/ Package: ferret Architecture: all Depends: tk8.4 | wish (>= 8.4), bwidget (>= 1.7.0), ${misc:Depends} Suggests: postgresql | mysql-server Description: CASE tool for data model editing GNU Ferret (Free Entity Relationship and Reverse Engineering Tool) serves to edit data models. These can be implemented within a range of relational databases such as PostgreSQL or MySQL. debian/compat0000644000000000000000000000000212076627355010401 0ustar 9 debian/ferret.desktop0000644000000000000000000000031212076633040012045 0ustar [Desktop Entry] Version=1.0 Name=ferret Comment=Design E-R databases Exec=ferret %F Terminal=false Type=Application Categories=Application;Development; MimeType=application/x-ferret; Name[pt_BR]=ferret debian/rules0000755000000000000000000000003612076632713010254 0ustar #!/usr/bin/make -f %: dh $@ debian/ferret.10000644000000000000000000000154512076635720010554 0ustar .TH FERRET "1" "May 2006" "Linux User's Manual" "Ferret Manual" .SH NAME ferret \- CASE tool for edit data models .SH SYNAPSIS .B Ferret .SH DESCRIPTION .BR Ferret is a GNU Free Entity Relationship and Reverse Engineering Tool. The data models generated by can then be implemented on some relational data base implementation such as PostgreSQL or MySQL. .SH OPTIONS This program is a graphical application. Simply type ferret on a command line to launch the GUI. There are no options at all for it. For further information, refer documentation from the Ferret, located on .B http://www.gnu.org/software/ferret/project/docs-all.html .B "REPORTING BUGS" Report bugs to .sp This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.