head	1.6;
access;
symbols;
locks; strict;
comment	@# @;


1.6
date	93.04.08.17.25.13;	author miley;	state Exp;
branches;
next	1.5;

1.5
date	93.04.08.16.52.49;	author miley;	state Exp;
branches;
next	1.4;

1.4
date	93.04.07.08.44.22;	author terry;	state Exp;
branches;
next	1.3;

1.3
date	93.04.06.23.15.56;	author jimbo;	state Exp;
branches;
next	1.2;

1.2
date	93.04.06.22.09.15;	author jimbo;	state Exp;
branches;
next	1.1;

1.1
date	93.04.06.18.20.45;	author miley;	state Exp;
branches;
next	;


desc
@@


1.6
log
@moved in terry's help.
@
text
@#!/local/bin/wish -f
#

# some utilities
set HERE /home/src/base/local/tk/pg_browse
source ${HERE}/tkutils

set auto_path "$tk_library/demos $auto_path"
set type_built ""
set varname ""
set prev 0

if { [lindex $argv 0] != "" } {
    set pghost [lindex $argv 0]
} elseif { [info exists env(PGHOST)] } {
    set pghost $env(PGHOST)
} else {
    set pghost localhost
}
puts stdout "using pghost $pghost"
if { [lindex $argv 1] != "" } {
    set database [lindex $argv 1]
} elseif { [info exists env(DATABASE)] } {
    set database $env(DATABASE)
} else {
    set database $env(USER)
}
puts stdout "using database $database"


frame .pg_edit
pack append . .pg_edit {top fillx }

frame .pg_edit.info
label .pg_edit.info.progress
if  [ file exists ${HERE}/bitmaps/redwood ] {
        label .pg_edit.info.bit -bitmap @@${HERE}/bitmaps/redwood

} else {
        label .pg_edit.info.bit -text  "S2K"
}
label .pg_edit.info.title -text "Host: $pghost  Database: $database"
pack append .pg_edit.info \
	.pg_edit.info.bit { left padx 10 pady 10 } \
	.pg_edit.info.title { left padx 10 pady 10 } \
	.pg_edit.info.progress { right padx 10 pady 10 }


frame .pg_edit.menu 
menubutton .pg_edit.menu.file -text "File" -menu .pg_edit.menu.file.m
menu .pg_edit.menu.file.m
.pg_edit.menu.file.m add command -label "Create Class" -command {create_sch}
.pg_edit.menu.file.m add command -label "Delete Class in Database" -command {delete_sch}
.pg_edit.menu.file.m add command -label "Clear Class Definition Locally" -command { set type_built ""; .pg_edit.list delete 0 end }
.pg_edit.menu.file.m add command -label "Quit" -command {destroy . }

# Help Stuff

menubutton .pg_edit.menu.help -text "Help" -menu .pg_edit.menu.help.m
menu .pg_edit.menu.help.m
	.pg_edit.menu.help.m add command -label "Overview" -command { 
		helpbox {
pg_edit is a routine for create
postgres classes.  It is called from
pg_browse , or can be called by itself
as a unix command.  
Basic Steps:
1. Select menu bar "Add Types" and
   choose the types for your database.
2. Enter Class Name 
3. Select menu bar "File" and choose Create
   Class, or just hit the return key
*********************************
*** Now in the pg_browse window 
*********************************
4. double click your database, then double click
   your class, then select "Create Query
   Tool" under the File menu in pg_browse" }
}
.pg_edit.menu.help.m add command -label "Adding Types" -command {
		helpbox {
Select one of the types offered in the
pulldown menu.  You will need to name
the varible, then hit ok or return.  It
will now appear in the Main window If
you would like to make it an array,
click change dimensions.  You may
add as many types as you would like.  }
}
.pg_edit.menu.help.m add command -label "File: Create Class" -command {
		helpbox {
Before you do this, you should have
typed in the Class name and added the
instances of types you need in your
database.  You can now create a schema
by hitting return or, clicking on
Create Class in the File Menu.  }
}
.pg_edit.menu.help.m add command -label "File: Delete Class in Database" -command {
		helpbox {
Delete schema is VERY destructive! this
will demolish your definition of the
class, and all data you have stored in
it.  Postgres only allows the owner of
the class to do this, so others will
not zap you, but you can zap yourself.}
}
.pg_edit.menu.help.m add command -label "File: Clear Class Definition Locally" -command { helpbox {
Clear Schema clears the entries of
types, and lets you start over.  This
is NOT at all destructive.}
}
.pg_edit.menu.help.m add command -label "Bugs" -command {
		helpbox {
1.) Undefined types-- the postgres
cheat sheet that was distributed had
uint2 defined, does that exist in
postgres?  There seem to be a few extra
types in my menu.
2.) Multi Dimensional arrays-  I am not
sure if postgres can handle them, if
you keep clicking add dimension it will
add them for you.
I am pretty sure the monitor will come
back with an error.
3.) If you hit return with the class
name entry blank, then hit return
again, you will eventually have to
click the ok button, hitting
return on the ok get used as 2 returns.
4.) ???? I am sure they are there.
mail problems to terry@@esrg.ucsb.edu }
}

#	pack append .pg_edit.menu \
#		.pg_edit.menu.file { padx 10 left } \
#		.pg_edit.menu.help { padx 10 right }


menubutton .pg_edit.menu.types -text "Add Type" -menu .pg_edit.menu.types.m 
menu .pg_edit.menu.types.m
.pg_edit.menu.types.m add command -label "Float 4 byte"	\
	-command { "addtype" "float4" }
.pg_edit.menu.types.m add command -label "Float 8 byte"	\
	-command { "addtype" "float8" }
.pg_edit.menu.types.m add command -label "Text"		\
	-command { "addtype" "text" } 
.pg_edit.menu.types.m add command -label "Char"		\
	-command { "addtype" "char" } 
.pg_edit.menu.types.m add command -label "Char 16"		\
	-command { "addtype" "char16" } 
.pg_edit.menu.types.m add command -label "Integer 4 byte"	\
	-command { "addtype" "int4" } 
.pg_edit.menu.types.m add command -label "Integer 4 byte unsigned" \
	-command { "addtype" "uint4" } 
.pg_edit.menu.types.m add command -label "Integer 2 byte"	\
	-command { "addtype" "int2" } 
.pg_edit.menu.types.m add command -label "Integer 2 byte unsigned" \
	-command { "addtype" "uint2" } 
.pg_edit.menu.types.m add command -label "Absolute Time"	\
	-command { "addtype" "abstime" }
.pg_edit.menu.types.m add command -label "Relative Time"	\
	-command { "addtype" "reltime" }
.pg_edit.menu.types.m add command -label "Time Interval " 	\
	-command { "addtype" "tinterval" }

pack append .pg_edit.menu \
	.pg_edit.menu.file { left padx 10 } \
	.pg_edit.menu.types { left padx 10 } \
	.pg_edit.menu.help { right padx 10 }


frame .pg_edit.class_def
listbox .pg_edit.list -yscroll ".pg_edit.yscr set" -xscroll \
	".pg_edit.xscr set" -setgrid true
scrollbar .pg_edit.yscr -relief flat -command ".pg_edit.list yview"
scrollbar .pg_edit.xscr -relief flat -command ".pg_edit.list xview" -orient horiz


label .pg_edit.class_def.name_label -text "Class name"
entry .pg_edit.class_def.name_ent -width 20 -relief sunken
frame .pg_edit.class_def.entries
pack append .pg_edit.class_def.entries \
	.pg_edit.class_def.name_label left \
	.pg_edit.class_def.name_ent { left pady 10}
pack append .pg_edit.class_def \
	.pg_edit.class_def.entries top


proc create_sch {} {
	global type_built string pghost database 
	set text "-text {"
	set begin "create "
	set mid   " ( " 
	set end   " ) \g" 
	set end2   " }" 
	set class [ .pg_edit.class_def.name_ent get]
	if { $class==""} { 
		mkDialog .notice {-text {Please enter class name first} \
			-aspect 250} {OK {}}
	} else { 
		set string2 $begin$class$mid$type_built$end
		working .pg_edit.info
		set answer [ exec echo $string2 | monitor -h $pghost $database]
		waiting .pg_edit.info
		set string -text\ \{$answer\}
		mkDialog .notice $string {OK {}}
	}
	focus .pg_edit.class_def.name_ent 
	

}
proc delete_sch {} {

		global pghost database
		 set class [ .pg_edit.class_def.name_ent get]
			if { $class==""} {
				mkDialog .notice {-text {Please enter class name first} \
					-aspect 250} {OK {}}
			} else {
					set string destroy\ $class\ \\g
					working .pg_edit.info
					set answer \
[ exec echo $string | monitor -h $pghost $database ]
					waiting .pg_edit.info
					set answer -text\ \{$answer\}
					 mkDialog .notice  $answer  {OK {}}
				
			}

	focus .pg_edit.class_def.name_ent 
}



proc addtype { type } {
	global type_built prev varname dims
	set comma " , "
	set dims ""
	set equal " = "
	set varname ""
	getname $type
	tkwait variable varname
	if { $varname!="" } { 
		if { $prev } { set type_built $type_built$comma }
		set prev [expr $prev+1 ]
		set type_built $type_built$varname$equal$type$dims
	.pg_edit.list  insert end "Variable named $varname of type $type$dims"

	}
	focus .pg_edit.class_def.name_ent 
}
proc getname { type } {
	global varname dims current_type dim_window
	set dim_window 1
	catch {destroy .getname}
	toplevel .getname
	wm geometry .getname +0+0

	frame .getname.buttons
	set current_type $type
	label .getname.title -text "Enter Varible name and hit ok"
	entry .getname.ent -width 20 -relief sunken
	label .getname.lab -text "Variable name of type $type$dims"
	button .getname.ok -text ok -command \
		{set varname [.getname.ent get] ; destroy .getname} 
	button .getname.cancel -text cancel -command \
		{set varname "";destroy .getname} 
	button .getname.changedim -text "Change dimensions" \
		-command change_dims 

	frame .getname.entries
	pack append .getname.entries \
		.getname.lab left \
		.getname.ent { left pady 10}
	pack append .getname.buttons \
		.getname.changedim {left } \
		.getname.cancel {left pady 10 padx 50} \
		.getname.ok {left pady 10 padx 50 } 


	pack append .getname \
		.getname.title top \
		.getname.entries top  \
		.getname.buttons top
	tkwait visibility .getname.ent
	focus .getname.ent
bind .getname.ent <Return> \
		{set varname [.getname.ent get] ; destroy .getname} 

}
proc change_dims { } {
	global dims size current_type dim_window 
	if { $dim_window } {
		set size 0
		frame .getname.dims
		pack append .getname \
			.getname.dims top
		label .getname.dims.explain -text \
		 "first select the size of the dimension you\
		  wish to add then click add another dimension"
		radiobutton .getname.dims.unl -text "Unlimited" \
			-variable size -value 0
		radiobutton .getname.dims.set_limit \
			-text "set size of" -variable size -value 1
		entry .getname.dims.ent -relief  sunken
		frame .getname.dims.entries
		pack append .getname.dims.entries \
			.getname.dims.set_limit left \
			.getname.dims.ent left

		button .getname.dims.add \
			-text "add another dimension " -command { set_dim }
		
		pack append .getname.dims \
			.getname.dims.explain {top pady 50} \
			.getname.dims.entries top \
			.getname.dims.unl top \
			.getname.dims.add {top pady 50} 
		set dim_window 0
		tkwait visibility .getname.dims.ent
		focus .getname.dims.ent
		bind .getname.dims.ent <Return> \
			{set varname [.getname.ent get] ; destroy .getname} 
	} 

}
proc set_dim { } {
	global dims current_type size
	set unlimit "\[\]"
	set begin "\["
	set end "\]"
	if { $size==0 } { 
		set dims $dims$unlimit
	} {
		set num [.getname.dims.ent get]
		set dims $dims$begin$num$end
	}
	.getname.lab configure -text "Variable name of type $current_type$dims"
}


proc rev win {
        set b [$win configure -background ]
        set f [$win configure -foreground ]
        $win configure -background [lindex $f 4]
        $win configure -foreground [lindex $b 4]
}

proc working { w } {
        rev $w.progress
        $w.progress configure -text "Working..."
        update
}

proc waiting { w } {
        rev $w.progress
        $w.progress configure -text ""
        update
}


wm geometry . -0+0



pack append .pg_edit \
	.pg_edit.menu { top fillx } \
	.pg_edit.info { top fillx } \
	.pg_edit.class_def { top fillx} \
	.pg_edit.xscr { bottom fillx} \
	.pg_edit.yscr { right filly} \
	.pg_edit.list { expand fill} 

tkwait visibility  .pg_edit.class_def.name_ent 
focus .pg_edit.class_def.name_ent 
bind .pg_edit.class_def.name_ent <Return> {create_sch}
bind all <ButtonRelease-2> { %W insert insert [selection get] }

@


1.5
log
@terry's latest version
@
text
@d57 2
d61 73
a133 3
.pg_edit.menu.help.m add command -label "About Edit..." -command { edit_help }
proc edit_help { } { infobox Help "This is Help for the edit Tool used inside
	pg_browse More help and features in version 2.0.  "}
d135 3
d139 1
a187 1

@


1.4
log
@changed teh underline in the menu
-terry
@
text
@d3 5
d31 2
a32 3
frame .class_def
frame .menu -relief raised -borderwidth 1
frame .e
d34 5
a38 2
if  [ file exists "/home/src/base/local/tk/pg_browse/s2000" ] {
	label .e.edit_bit -bitmap @@/home/src/base/local/tk/pg_browse/s2000
d40 1
a40 1
	label .e.edit_bit -text  "S2K"
d42 5
a46 6
label .e.edit_title -text "pg_edit          host: $pghost          database: $database"
pack append .e .e.edit_bit {left fill} .e.edit_title {left fill}
button .quit -text Quit -command {quit} 
button .create_schema -text "Create Schema" -command {create_sch}
button .delete_schema -text "delete schema" -command {delete_sch}
label .busy -text "       " 
a47 6
entry .class_def.name_ent -width 20 -relief sunken
label .class_def.name_label -text "Class name"
frame .class_def.entries
pack append .class_def.entries .class_def.name_label left \
	.class_def.name_ent { left pady 10}
pack append .class_def .class_def.entries top
d49 7
d57 5
a61 1
pack append . .menu {top fillx} .e {top fillx pady 10} .class_def {top fillx}
a62 15
menubutton .menu.types -text "Add postgres types" -menu .menu.types.m \
	-underline 0
menu .menu.types.m
.menu.types.m add command -label "Float 4 byte" -command { "addtype" "float4" }
.menu.types.m add command -label "Float 8 byte" -command { "addtype" "float8" }
.menu.types.m add command -label "Text" -command { "addtype" "text" } 
.menu.types.m add command -label "Char" -command { "addtype" "char" } 
.menu.types.m add command -label "Char 16" -command { "addtype" "char16" } 
.menu.types.m add command -label "Integer 4 byte" -command { "addtype" "int4" } 
.menu.types.m add command -label "Integer 4 byte unsigned" -command { "addtype" "uint4" } 
.menu.types.m add command -label "Integer 2 byte" -command { "addtype" "int2" } 
.menu.types.m add command -label "Integer 2 byte unsigned" -command { "addtype" "uint2" } 
.menu.types.m add command -label "Absolute Time" -command { "addtype" "abstime" }
.menu.types.m add command -label "Relative Time" -command { "addtype" "reltime" }
.menu.types.m add command -label "Time Interval " -command { "addtype" "tinterval" }
d64 26
d91 4
a94 5
pack append  .menu .menu.types  left \
.create_schema {left pady 3 padx 30} \
.delete_schema {left pady 3 padx 30} \
.quit {left pady 3 padx 30} \
.busy {bottom pady 3 padx 30} 
d96 19
a114 3
proc quit {} {
	exit
}
d116 1
a116 1
	global type_built string
d122 1
a122 1
	set class [ .class_def.name_ent get]
d126 1
a126 2
	} { 
#		set string $text$begin$class$mid$type_built$end$end2
d128 3
a130 3
		working
		set answer [ echo $string2 | monitor ]
		waiting
d134 1
d140 2
a141 1
		 set class [ .class_def.name_ent get]
d145 1
a145 1
			} {
d147 4
a150 3
					working
					set answer [ echo $string | monitor ]
					waiting
d152 1
d156 1
a156 1
	 mkDialog .notice  $answer  {OK {}}
d168 1
a168 1
	focus .
d173 1
a173 2
		label .class_def.var$prev -text "Variable named $varname of type $type$dims"
		pack append .class_def .class_def.var$prev top
d176 1
d183 1
a183 1
	wm geometry  .getname +0+0
d191 1
a191 1
		{set varname [.getname.ent get]; destroy .getname} 
d198 3
a200 1
	pack append .getname.entries .getname.lab left .getname.ent { left pady 10}
d207 3
a209 1
	pack append .getname .getname.title top .getname.entries top  \
d211 5
a215 3
	tkwait visibility .getname
	grab .getname
	tkwait window .getname
d222 3
a224 2
		pack append .getname .getname.dims top
		label .getname.dims.explain -text\
d227 2
a228 1
		radiobutton .getname.dims.unl -text "Unlimited" -variable size -value 0
d233 3
a235 2
		pack append .getname.dims.entries .getname.dims.set_limit left \
		.getname.dims.ent left
d237 2
a238 2
		button .getname.dims.add -text "add another dimension "  \
		-command { set_dim }
d242 2
a243 1
			.getname.dims.entries top .getname.dims.unl top \
d246 4
d267 6
a272 4
proc working {} {
    #rev .b.busy
    .busy configure -text "Working"
    update
d275 4
a278 4
proc waiting {} {
    #rev .b.busy
    .busy configure -text "       "
    update
d280 8
d289 16
a304 7
frame .vard
frame .getname
frame .notice
bind . <Control-f> {showVars .vard type_built varname string }
#showVars .vard type_built prev varname string
focus .
focus .class_def.name_ent
@


1.3
log
@terry's changes - added bitmap and a whole bunch of shit
@
text
@d53 1
a53 1
	-underline 18
@


1.2
log
@added argv pghost and database and monitor
-h and database operands
@
text
@d7 1
d9 1
a9 1
	set pghost [lindex $argv 0]
d11 1
a11 1
	set pghost $env(PGHOST) 
d13 1
a13 1
	set pghost localhost
d17 1
a17 1
	set database [lindex $argv 1]
d19 1
a19 1
	set database $env(DATABASE) 
d21 1
a21 1
	set database $env(USER)
d25 1
d28 10
a37 2
label .edit_title -text "pg_edit          host: $pghost          database: $database"
button .quit -text Quit -command {quit} -bg red
d40 2
a41 1
button .foo -text "foo foo" -command {set type}
d50 1
a50 1
pack append . .menu {top fillx} .edit_title {top fillx pady 10} .class_def {top fillx}
d72 2
a73 1
	.quit {left pady 3 padx 30}
d79 1
a79 1
	global type_built string pghost database
d90 1
a90 1
		set string $text$begin$class$mid$type_built$end$end2
d92 4
a96 1
		exec echo $string2 | monitor -h $pghost $database
d109 1
d111 1
d151 1
a151 1
		{set varname [.getname.ent get]; destroy .getname} -bg green -fg black
d153 1
a153 1
		{set varname "";destroy .getname} -bg red -fg black
d211 1
d213 5
a217 1

d219 4
d231 1
@


1.1
log
@Initial revision
@
text
@d7 3
a9 1
if [info exists env(PGHOST)] {
d14 4
a17 1
if [info exists env(DATABASE)] {
d20 1
a20 1
	set pghost localhost
d22 1
d67 1
a67 1
	global type_built string
d81 1
a81 1
		echo $string2 | monitor
@
