From dec1889a73c7295bc4acd39a5f57d9f367e40d13 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Wed, 1 Oct 1997 15:38:59 +0000 Subject: [PATCH] Update to 0.4. --- src/bin/pgaccess/README | 32 +- src/bin/pgaccess/pgaccess.tcl | 1049 ++++++++++++++------------------- 2 files changed, 452 insertions(+), 629 deletions(-) diff --git a/src/bin/pgaccess/README b/src/bin/pgaccess/README index 2eca3898a0..2eb3c8dff9 100644 --- a/src/bin/pgaccess/README +++ b/src/bin/pgaccess/README @@ -22,8 +22,11 @@ PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -PGACCESS 0.3 , 29 September 1997 +PGACCESS 0.4 , 1 October 1997 ================================ +I dedicate this program to my little 4 year daughter Ana-Maria and my wife +for their understanding. I hope they will forgive me for spending so many +time far from them. @@ -34,7 +37,7 @@ can manage your tables, edit them, define queries, sequences and functions. I use Tcl/Tk because it's a powerfull language, and it took me only -three days of hard work to get it as you see it now. +four days of hard work to get it as you see it now. @@ -73,6 +76,7 @@ pgaccess.tcl file. 4.What does it now ? Opens any database on a specified host at the specified port. +Perform vacuum command. Tables - opening tables for vieweing, max 200 records @@ -81,30 +85,41 @@ Tables - import/export to external files (SDF,CSV) - filter capabilities ,enter filter like price>3.14 - sort order capabilities ,enter manually the sort field(s) -- editing in place +- editing in place, double click the text you want to change +- record deleting , point the record, press Del key +- adding new records ,save new row with right-button-click on table for the moment - table generator assistant lizzard :-) (not wizzard) - table renaming and deleting (dropping) +- table information retrieving : owner, field information + Queries - define, edit and store "user defined queries" +- save view layout - can store queries as views - execution of queries - vieweing of select type queries result - running action queries (insert, update, delete) + Sequences -- define them -- inspect them -- delete them +- define +- inspect +- delete + Views - defining them saving queries as views - view them , with filtering and sorting capabilities - delete them +Functions +- define , inspect , delete + + 5.What it should do in the future ? - table design (add new fields, renaming, etc) +- sequence and function renaming - script execution (simple SQL commands) -- function manipulation (defining, vieweing) - a simple report generator and viewer - help on line @@ -120,8 +135,7 @@ Some information about table structure, no. of fields, records would be also good. =========================================================================== - -You will always find the latest version at: http://www.flex.ro/pgaccess +You would find always the last version at http://www.flex.ro/pgaccess Please feel free to e-mail me with any suggestion or bug description that will help to improve this. diff --git a/src/bin/pgaccess/pgaccess.tcl b/src/bin/pgaccess/pgaccess.tcl index aa9a9adba7..d8fcbeb1fb 100644 --- a/src/bin/pgaccess/pgaccess.tcl +++ b/src/bin/pgaccess/pgaccess.tcl @@ -78,20 +78,6 @@ switch $activetab { if {$temp==""} return; } -proc delete_function {objname} { -global dbc -pg_select $dbc "select * from pg_proc where proname='$objname'" rec { - set funcpar $rec(proargtypes) - set nrpar $rec(pronargs) -} -set lispar {} -for {set i 0} {$i<$nrpar} {incr i} { - lappend lispar [get_pgtype [lindex $funcpar $i]] -} -set lispar [join $lispar ,] -sql_exec noquiet "drop function $objname ($lispar)" -} - proc cmd_Design {} { global dbc activetab tablename if {$dbc==""} return; @@ -122,7 +108,6 @@ catch { } cursor_arrow .dw } - } proc cmd_Import_Export {how} { @@ -140,6 +125,28 @@ if {$activetab=="Tables"} { .iew.expbtn configure -text $how } +proc cmd_Information {} { +global dbc tiw activetab +if {$dbc==""} return; +if {$activetab!="Tables"} return; +set tiw(tablename) [get_dwlb_Selection] +if {$tiw(tablename)==""} return; +Window show .tiw +.tiw.lb delete 0 end +pg_select $dbc "select attnum,attname,typname,attlen,usename from pg_class,pg_user,pg_attribute,pg_type where (pg_class.relname='$tiw(tablename)') and (pg_class.oid=pg_attribute.attrelid) and (pg_class.relowner=pg_user.usesysid) and (pg_attribute.atttypid=pg_type.oid) and (attnum>0) order by attnum" rec { + set fsize $rec(attlen) + set ftype $rec(typname) + if {$ftype=="varchar"} { + incr fsize -4 + } + if {$ftype=="text"} { + set fsize "" + } + .tiw.lb insert end [format "%-32s %-14s %-4s" $rec(attname) $ftype $fsize] + set tiw(owner) $rec(usename) +} +} + proc cmd_New {} { global dbc activetab queryname queryoid cbv funcpar funcname funcret if {$dbc==""} return; @@ -191,35 +198,6 @@ switch $activetab { } } -proc get_pgtype {oid} { -global dbc -set temp "unknown" -pg_select $dbc "select typname from pg_type where oid=$oid" rec { - set temp $rec(typname) -} -return $temp -} - -proc open_function {objname} { -global dbc funcname funcpar funcret -Window show .fw -place .fw.okbtn -y 400 -.fw.okbtn configure -state disabled -.fw.text1 delete 1.0 end -pg_select $dbc "select * from pg_proc where proname='$objname'" rec { - set funcname $objname - set temppar $rec(proargtypes) - set funcret [get_pgtype $rec(prorettype)] - set funcnrp $rec(pronargs) - .fw.text1 insert end $rec(prosrc) -} -set funcpar {} -for {set i 0} {$i<$funcnrp} {incr i} { - lappend funcpar [get_pgtype [lindex $temppar $i]] -} -set funcpar [join $funcpar ,] -} - proc cmd_Queries {} { global dbc @@ -311,6 +289,22 @@ catch { cursor_arrow .dw } +proc color_record {obj} { +global newrec_fields +set oid [get_tag_info $obj o] +if {![hide_entry]} return; +if {$newrec_fields!=""} { + if {[get_tag_info $obj n]!="ew"} { + if {![save_new_record]} return; + } +} +.mw.c itemconfigure hili -fill black +if {$oid==0} return; +.mw.c dtag hili hili +.mw.c addtag hili withtag o$oid +.mw.c itemconfigure hili -fill blue +} + proc cursor_arrow {w} { $w configure -cursor top_left_arrow update idletasks @@ -321,12 +315,42 @@ $w configure -cursor watch update idletasks } +proc delete_function {objname} { +global dbc +pg_select $dbc "select * from pg_proc where proname='$objname'" rec { + set funcpar $rec(proargtypes) + set nrpar $rec(pronargs) +} +set lispar {} +for {set i 0} {$i<$nrpar} {incr i} { + lappend lispar [get_pgtype [lindex $funcpar $i]] +} +set lispar [join $lispar ,] +sql_exec noquiet "drop function $objname ($lispar)" +} + +proc delete_record {} { +global dbc ds_updatable tablename +if {$ds_updatable=="false"} return; +if {![hide_entry]} return; +set taglist [.mw.c gettags hili] +if {[llength $taglist]==0} return; +set oidtag [lindex $taglist [lsearch -regexp $taglist "^o"]] +set oid [string range $oidtag 1 end] +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 drag_it {w x y} { global draglocation - if {"$draglocation(obj)" != ""} { + set dlo "" + catch { set dlo $draglocation(obj) } + if {$dlo != ""} { set dx [expr $x - $draglocation(x)] set dy [expr $y - $draglocation(y)] - $w move $draglocation(obj) $dx $dy + $w move $dlo $dx $dy set draglocation(x) $x set draglocation(y) $y } @@ -335,7 +359,10 @@ global draglocation proc drag_start {w x y} { global draglocation catch {unset draglocation} -set draglocation(obj) [$w find closest $x $y] +set object [$w find closest $x $y] +if {[lsearch [.mw.c gettags $object] movable]==-1} return; +.mw.c bind movable {} +set draglocation(obj) $object set draglocation(x) $x set draglocation(y) $y set draglocation(start) $x @@ -343,7 +370,11 @@ set draglocation(start) $x proc drag_stop {w x y} { global draglocation colcount colwidth layout_name dbc - if {"$draglocation(obj)" != ""} { + set dlo "" + catch { set dlo $draglocation(obj) } + if {$dlo != ""} { + .mw.c bind movable {.mw configure -cursor top_left_arrow} + .mw configure -cursor top_left_arrow set ctr [get_tag_info $draglocation(obj) g] set diff [expr $x-$draglocation(start)] if {$diff==0} return; @@ -373,12 +404,12 @@ global colcount colname colwidth set posx 5 for {set i 0} {$i<$colcount} {incr i} { set xf [expr $posx+[lindex $colwidth $i]] - .mw.c create rectangle $posx 3 $xf 22 -fill lightgray -outline "" -width 0 -tags header + .mw.c create rectangle $posx 3 $xf 22 -fill #CCCCCC -outline "" -width 0 -tags header .mw.c create text [expr $posx+[lindex $colwidth $i]*1.0/2] 14 -text [lindex $colname $i] -tags header -fill navy -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* - .mw.c create line $posx 22 [expr $xf-1] 22 -fill darkgray -tags header - .mw.c create line [expr $xf-1] 5 [expr $xf-1] 22 -fill darkgray -tags header + .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 gray -tags [subst {header movable g$i}] + .mw.c create line $xf -15000 $xf 15000 -fill #CCCCCC -tags [subst {header movable g$i}] set posx [expr $xf+2] } for {set i 0} {$i < 100} {incr i} { @@ -387,6 +418,18 @@ for {set i 0} {$i < 100} {incr i} { .mw.c bind movable {drag_start %W %x %y} .mw.c bind movable {drag_it %W %x %y} .mw.c bind movable {drag_stop %W %x %y} +.mw.c bind movable {.mw configure -cursor left_side} +.mw.c bind movable {.mw configure -cursor top_left_arrow} +} + +proc draw_new_record {} { +global ds_updatable last_rownum colwidth colcount +set posx 10 +if {$ds_updatable} {for {set j 0} {$j<$colcount} {incr j} { + .mw.c create text $posx [expr 30+$last_rownum*14] -text * -tags [subst {o0 c$j rows new unt}] -anchor w -font -*-Clean-Medium-R-Normal-*-*-130-*-*-*-*-* + incr posx [expr [lindex $colwidth $j]+2] + } +} } proc draw_tabs {} { @@ -408,6 +451,15 @@ if {$temp==""} return ""; return [.dw.lb get $temp] } +proc get_pgtype {oid} { +global dbc +set temp "unknown" +pg_select $dbc "select typname from pg_type where oid=$oid" rec { + set temp $rec(typname) +} +return $temp +} + proc get_tag_info {itemid prefix} { set taglist [.mw.c itemcget $itemid -tags] set i [lsearch -glob $taglist $prefix*] @@ -415,37 +467,6 @@ set thetag [lindex $taglist $i] return [string range $thetag 1 end] } -proc save_new_record {} { -global dbc newrec_fields newrec_values tablename msg last_rownum -if {$newrec_fields==""} {return 1} -set msg "Saving new record ..." -after 1000 {set msg ""} -set retval [catch { - set sqlcmd "insert into $tablename ([join $newrec_fields ,]) values ([join $newrec_values ,])" - set pgres [pg_exec $dbc $sqlcmd] - } errmsg] -if {$retval} { - show_error "Error inserting new record\n\n$errmsg" - return 0 -} -set oid [pg_result $pgres -oid] -pg_result $pgres -clear -.mw.c itemconfigure new -fill black -.mw.c addtag o$oid withtag new -.mw.c dtag new o0 -.mw.c dtag rows new -# Replace * from untouched new row elements with " " -foreach item [.mw.c find withtag unt] { - .mw.c itemconfigure $item -text " " -} -.mw.c dtag rows unt -incr last_rownum -draw_new_record -set newrec_fields {} -set newrec_values {} -return 1 -} - proc hide_entry {} { global dirty dbc msg fldval itemid colname tablename global newrec_fields newrec_values @@ -476,12 +497,13 @@ if {$dirty} { cursor_arrow .mw if {!$retval} { set msg "" - return + return 0 } .mw.c itemconfigure $itemid -text $fldval -fill $fillcolor } catch {destroy .mw.entf} set dirty false +return 1 } proc load_layout {tablename} { @@ -555,13 +577,33 @@ if {[catch {set newdbc [pg_connect $newdbname -host $newhost -port $newpport]} m } } +proc open_function {objname} { +global dbc funcname funcpar funcret +Window show .fw +place .fw.okbtn -y 400 +.fw.okbtn configure -state disabled +.fw.text1 delete 1.0 end +pg_select $dbc "select * from pg_proc where proname='$objname'" rec { + set funcname $objname + set temppar $rec(proargtypes) + set funcret [get_pgtype $rec(prorettype)] + set funcnrp $rec(pronargs) + .fw.text1 insert end $rec(prosrc) +} +set funcpar {} +for {set i 0} {$i<$funcnrp} {incr i} { + lappend funcpar [get_pgtype [lindex $temppar $i]] +} +set funcpar [join $funcpar ,] +} + proc open_query {how} { global dbc queryname layout_found queryoid ds_query ds_updatable ds_isaquery sortfield filter if {[.dw.lb curselection]==""} return; set queryname [.dw.lb get [.dw.lb curselection]] if {[catch {set pgres [pg_exec $dbc "select querycommand,querytype,oid from pga_queries where queryname='$queryname'"]}]} then { - show_error "Error retrieving query definition + show_error "Error retrieving query definition" return } if {[pg_result $pgres -numTuples]==0} { @@ -636,7 +678,7 @@ select_records $ds_query proc pan_left {} { global leftcol leftoffset colwidth colcount -hide_entry +if {![hide_entry]} return; if {$leftcol==[expr $colcount-1]} return; set diff [expr 2+[lindex $colwidth $leftcol]] incr leftcol @@ -647,7 +689,7 @@ incr leftoffset $diff proc pan_right {} { global leftcol leftoffset colcount colwidth -hide_entry +if {![hide_entry]} return; if {$leftcol==0} return; incr leftcol -1 set diff [expr 2+[lindex $colwidth $leftcol]] @@ -656,9 +698,41 @@ incr leftoffset -$diff .mw.c move rows $diff 0 } +proc save_new_record {} { +global dbc newrec_fields newrec_values tablename msg last_rownum +if {![hide_entry]} {return 0} +if {$newrec_fields==""} {return 1} +set msg "Saving new record ..." +after 1000 {set msg ""} +set retval [catch { + set sqlcmd "insert into $tablename ([join $newrec_fields ,]) values ([join $newrec_values ,])" + set pgres [pg_exec $dbc $sqlcmd] + } errmsg] +if {$retval} { + show_error "Error inserting new record\n\n$errmsg" + return 0 +} +set oid [pg_result $pgres -oid] +pg_result $pgres -clear +.mw.c itemconfigure new -fill black +.mw.c addtag o$oid withtag new +.mw.c dtag new o0 +.mw.c dtag rows new +# Replace * from untouched new row elements with " " +foreach item [.mw.c find withtag unt] { + .mw.c itemconfigure $item -text " " +} +.mw.c dtag rows unt +incr last_rownum +draw_new_record +set newrec_fields {} +set newrec_values {} +return 1 +} + proc scroll_window {par1 par2 args} { global nrecs toprec -hide_entry +if {![hide_entry]} return; if {$par1=="scroll"} { set newtop $toprec if {[lindex $args 0]=="units"} { @@ -685,7 +759,7 @@ global newrec_fields newrec_values global last_rownum set newrec_fields {} set newrec_values {} -hide_entry +if {![hide_entry]} return; .mw.c delete rows .mw.c delete header set leftcol 0 @@ -708,7 +782,7 @@ if {$layout_found} then { ($colcount != [llength $colname]) || ($colcount != [llength $colwidth]) } then { # No. of columns don't match, something is wrong - show_error "Layout info corrupted!" + # tk_messageBox -title Information -message "Layout info changed !\nRescanning..." set layout_found false sql_exec quiet "delete from pga_layout where tablename='$tablename'" } @@ -749,25 +823,17 @@ pg_result $pgres -clear set toprec 0 set_scrollbar if {$ds_updatable} then { - .mw.c bind rows {show_entry [%W find closest %x %y]} + .mw.c bind rows {color_record [%W find closest %x %y]} + .mw.c bind rows {show_entry [%W find closest %x %y]} } else { - .mw.c bind rows {bell} + .mw.c bind rows {} + .mw.c bind rows {bell} } set dirty false draw_headers cursor_arrow .mw } -proc draw_new_record {} { -global ds_updatable last_rownum colwidth colcount -set posx 10 -if {$ds_updatable} {for {set j 0} {$j<$colcount} {incr j} { - .mw.c create text $posx [expr 30+$last_rownum*14] -text * -tags [subst {o0 c$j rows new unt}] -anchor w -font -*-Clean-Medium-R-Normal-*-*-130-*-*-*-*-* - incr posx [expr [lindex $colwidth $j]+2] - } -} -} - proc set_scrollbar {} { global nrecs toprec @@ -778,7 +844,7 @@ if {$nrecs==0} return; proc show_entry {id} { global dirty fldval msg itemid colname colwidth -hide_entry +if {![hide_entry]} return; set itemid $id set colidx [get_tag_info $id c] set fldval [string trim [.mw.c itemcget $id -text]] @@ -927,7 +993,7 @@ by Constantin Teodorescu} label $base.l3 \ -borderwidth 0 \ -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \ - -relief sunken -text {vers 0.34} + -relief sunken -text {vers 0.4} label $base.l4 \ -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \ -relief groove \ @@ -964,7 +1030,7 @@ proc vTclWindow.dbod {base} { ################### # CREATING WIDGETS ################### - toplevel $base -class Toplevel + toplevel $base -class Toplevel -cursor top_left_arrow wm focusmodel $base passive wm geometry $base 282x128+353+310 wm maxsize $base 1009 738 @@ -972,54 +1038,25 @@ proc vTclWindow.dbod {base} { wm overrideredirect $base 0 wm resizable $base 0 0 wm title $base "Open database" - label $base.lhost \ - -borderwidth 0 \ - -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \ - -relief raised -text Host - entry $base.ehost \ - -background #fefefe -borderwidth 1 -highlightthickness 1 \ - -selectborderwidth 0 -textvariable newhost - label $base.lport \ - -borderwidth 0 \ - -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \ - -relief raised -text Port - entry $base.epport \ - -background #fefefe -borderwidth 1 -highlightthickness 1 \ - -selectborderwidth 0 -textvariable newpport - label $base.ldbname \ - -borderwidth 0 \ - -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \ - -relief raised -text Database - entry $base.edbname \ - -background #fefefe -borderwidth 1 -highlightthickness 1 \ - -selectborderwidth 0 -textvariable newdbname - button $base.opbtu \ - -borderwidth 1 -command open_database \ - -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 \ - -pady 3 -text Open - button $base.canbut \ - -borderwidth 1 -command {Window hide .dbod} \ - -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 \ - -pady 3 -text Cancel + label $base.lhost -borderwidth 0 -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -relief raised -text Host + entry $base.ehost -background #fefefe -borderwidth 1 -highlightthickness 1 -selectborderwidth 0 -textvariable newhost + label $base.lport -borderwidth 0 -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -relief raised -text Port + entry $base.epport -background #fefefe -borderwidth 1 -highlightthickness 1 -selectborderwidth 0 -textvariable newpport + label $base.ldbname -borderwidth 0 -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -relief raised -text Database + entry $base.edbname -background #fefefe -borderwidth 1 -highlightthickness 1 -selectborderwidth 0 -textvariable newdbname + button $base.opbtu -borderwidth 1 -command open_database -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 -pady 3 -text Open + button $base.canbut -borderwidth 1 -command {Window hide .dbod} -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 -pady 3 -text Cancel ################### # SETTING GEOMETRY ################### - place $base.lhost \ - -x 35 -y 7 -anchor nw -bordermode ignore - place $base.ehost \ - -x 100 -y 5 -anchor nw -bordermode ignore - place $base.lport \ - -x 35 -y 32 -anchor nw -bordermode ignore - place $base.epport \ - -x 100 -y 30 -anchor nw -bordermode ignore - place $base.ldbname \ - -x 35 -y 57 -anchor nw -bordermode ignore - place $base.edbname \ - -x 100 -y 55 -anchor nw -bordermode ignore - place $base.opbtu \ - -x 70 -y 90 -width 60 -height 26 -anchor nw -bordermode ignore - place $base.canbut \ - -x 150 -y 90 -width 60 -height 26 -anchor nw -bordermode ignore + place $base.lhost -x 35 -y 7 -anchor nw -bordermode ignore + place $base.ehost -x 100 -y 5 -anchor nw -bordermode ignore + place $base.lport -x 35 -y 32 -anchor nw -bordermode ignore + place $base.epport -x 100 -y 30 -anchor nw -bordermode ignore + place $base.ldbname -x 35 -y 57 -anchor nw -bordermode ignore + place $base.edbname -x 100 -y 55 -anchor nw -bordermode ignore + place $base.opbtu -x 70 -y 90 -width 60 -height 26 -anchor nw -bordermode ignore + place $base.canbut -x 150 -y 90 -width 60 -height 26 -anchor nw -bordermode ignore } proc vTclWindow.dw {base} { @@ -1035,7 +1072,7 @@ proc vTclWindow.dw {base} { toplevel $base -class Toplevel \ -background #efefef wm focusmodel $base passive - wm geometry $base 322x355+147+218 + wm geometry $base 322x355+155+256 wm maxsize $base 1009 738 wm minsize $base 1 1 wm overrideredirect $base 0 @@ -1050,7 +1087,9 @@ proc vTclWindow.dw {base} { -font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* \ -highlightthickness 0 -selectborderwidth 0 \ -yscrollcommand {.dw.sb set} - bind $base.lb {cmd_Open} + bind $base.lb { + cmd_Open + } button $base.btnnew \ -borderwidth 1 -command cmd_New \ -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 \ @@ -1062,7 +1101,7 @@ proc vTclWindow.dw {base} { button $base.btndesign \ -borderwidth 1 -command cmd_Design \ -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 \ - -pady 3 -text Design + -pady 3 -state disabled -text Design label $base.lmask \ -borderwidth 0 \ -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \ @@ -1084,7 +1123,7 @@ proc vTclWindow.dw {base} { set newpport $pport Window show .dbod focus .dbod.edbname} \ - -label Open -state active + -label Open $base.menubutton23.01 add command \ \ -command {.dw.lb delete 0 end @@ -1118,11 +1157,13 @@ set sdbname {}} \ -borderwidth 1 -cursor {} \ -font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -tearoff 0 $base.mnob.m add command \ - -command cmd_New -label New -state active + -command cmd_New -label New $base.mnob.m add command \ -command {cmd_Delete } -label Delete $base.mnob.m add command \ -command {cmd_Rename } -label Rename + $base.mnob.m add command \ + -command cmd_Information -label Information menubutton $base.mhelp \ -borderwidth 1 \ -font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* \ @@ -1151,7 +1192,7 @@ set sdbname {}} \ place $base.btndesign \ -x 235 -y 40 -width 60 -height 25 -anchor nw -bordermode ignore place $base.lmask \ - -x 155 -y 45 -height 23 -anchor nw -bordermode ignore + -x 155 -y 40 -height 23 -anchor nw -bordermode ignore place $base.label22 \ -x 0 -y 0 -width 396 -height 23 -anchor nw -bordermode ignore place $base.menubutton23 \ @@ -1168,6 +1209,63 @@ set sdbname {}} \ -x 280 -y 1 -height 20 -anchor nw -bordermode ignore } +proc vTclWindow.fw {base} { + if {$base == ""} { + set base .fw + } + if {[winfo exists $base]} { + wm deiconify $base; return + } + ################### + # CREATING WIDGETS + ################### + toplevel $base -class Toplevel + wm focusmodel $base passive + wm geometry $base 306x288+298+290 + 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 "Function" + label $base.l1 -borderwidth 0 -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -relief raised -text Name + entry $base.e1 -background #fefefe -borderwidth 1 -highlightthickness 1 -selectborderwidth 0 -textvariable funcname + label $base.l2 -borderwidth 0 -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -relief raised -text Parameters + entry $base.e2 -background #fefefe -borderwidth 1 -highlightthickness 1 -selectborderwidth 0 -textvariable funcpar + label $base.l3 -borderwidth 0 -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -relief raised -text Returns + entry $base.e3 -background #fefefe -borderwidth 1 -highlightthickness 1 -selectborderwidth 0 -textvariable funcret + text $base.text1 -background #fefefe -borderwidth 1 -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -highlightthickness 1 -selectborderwidth 0 -wrap word + button $base.okbtn -borderwidth 1 -command { + if {$funcname==""} { + show_error "You must supply a name for this function!" + } elseif {$funcret==""} { + show_error "You must supply a return type!" + } else { + set funcbody [.fw.text1 get 1.0 end] + regsub -all "\n" $funcbody " " funcbody + if {[sql_exec noquiet "create function $funcname ($funcpar) returns $funcret as '$funcbody' language 'sql'"]} { + Window hide .fw + tk_messageBox -title PostgreSQL -message "Function created!" + tab_click .dw.tabFunctions + } + + } + } -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 -pady 3 -text Define + button $base.cancelbtn -borderwidth 1 -command {Window hide .fw} -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 -pady 3 -text Close + ################### + # SETTING GEOMETRY + ################### + 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 + place $base.e2 -x 95 -y 45 -width 198 -height 22 -anchor nw -bordermode ignore + place $base.l3 -x 15 -y 78 -anchor nw -bordermode ignore + place $base.e3 -x 95 -y 75 -width 198 -height 22 -anchor nw -bordermode ignore + place $base.text1 -x 15 -y 105 -width 275 -height 141 -anchor nw -bordermode ignore + place $base.okbtn -x 90 -y 255 -anchor nw -bordermode ignore + place $base.cancelbtn -x 160 -y 255 -anchor nw -bordermode ignore +} + proc vTclWindow.iew {base} { if {$base == ""} { set base .iew @@ -1186,27 +1284,13 @@ proc vTclWindow.iew {base} { wm overrideredirect $base 0 wm resizable $base 0 0 wm title $base "Import-Export table" - label $base.l1 \ - -borderwidth 0 \ - -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \ - -relief raised -text {Table name} - entry $base.e1 \ - -background #fefefe -borderwidth 1 -textvariable ie_tablename - label $base.l2 \ - -borderwidth 0 \ - -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \ - -relief raised -text {File name} - entry $base.e2 \ - -background #fefefe -borderwidth 1 -textvariable ie_filename - label $base.l3 \ - -borderwidth 0 \ - -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \ - -relief raised -text {Field delimiter} - entry $base.e3 \ - -background #fefefe -borderwidth 1 -textvariable ie_delimiter - button $base.expbtn \ - -borderwidth 1 \ - -command {if {$ie_tablename==""} { + label $base.l1 -borderwidth 0 -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -relief raised -text {Table name} + entry $base.e1 -background #fefefe -borderwidth 1 -textvariable ie_tablename + label $base.l2 -borderwidth 0 -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -relief raised -text {File name} + entry $base.e2 -background #fefefe -borderwidth 1 -textvariable ie_filename + label $base.l3 -borderwidth 0 -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -relief raised -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!" } elseif {$ie_filename==""} { show_error "You have to supply a external file name!" @@ -1234,38 +1318,21 @@ proc vTclWindow.iew {base} { Window hide .iew } cursor_arrow .iew -}} \ - -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 \ - -pady 3 -text Export - button $base.cancelbtn \ - -borderwidth 1 -command {Window hide .iew} \ - -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 \ - -pady 3 -text Cancel - checkbutton $base.oicb \ - -borderwidth 1 \ - -font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* \ - -text {with OIDs} -variable oicb +}} -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 -pady 3 -text Export + button $base.cancelbtn -borderwidth 1 -command {Window hide .iew} -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 -pady 3 -text Cancel + checkbutton $base.oicb -borderwidth 1 -font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -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.l2 \ - -x 25 -y 45 -anchor nw -bordermode ignore - place $base.e2 \ - -x 115 -y 40 -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.oicb \ - -x 170 -y 75 -anchor nw -bordermode ignore + place $base.l1 -x 25 -y 15 -anchor nw -bordermode ignore + place $base.e1 -x 115 -y 10 -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.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.oicb -x 170 -y 75 -anchor nw -bordermode ignore } proc vTclWindow.mw {base} { @@ -1280,12 +1347,15 @@ proc vTclWindow.mw {base} { ################### toplevel $base -class Toplevel wm focusmodel $base passive - wm geometry $base 631x452+152+213 + wm geometry $base 631x452+128+214 wm maxsize $base 1009 738 wm minsize $base 1 1 wm overrideredirect $base 0 wm resizable $base 0 0 wm title $base "Table browser" + bind $base { + delete_record + } label $base.hoslbl \ -borderwidth 0 \ -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \ @@ -1327,7 +1397,9 @@ if {[save_new_record]} { canvas $base.c \ -background #fefefe -borderwidth 2 -height 207 -relief ridge \ -width 295 - bind .mw.c {hide_entry;save_new_record} + bind $base.c { + if {[hide_entry]} {save_new_record} + } label $base.msglbl \ -anchor w -borderwidth 1 \ -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \ @@ -1336,12 +1408,12 @@ if {[save_new_record]} { -borderwidth 1 -command scroll_window -orient vert button $base.ert \ -borderwidth 1 -command pan_left \ - -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 \ - -pady 3 -text < + -font -Adobe-Helvetica-Bold-R-Normal-*-*-120-*-*-*-*-* -padx 9 \ + -pady 3 -text > button $base.dfggfh \ -borderwidth 1 -command pan_right \ - -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 \ - -pady 3 -text > + -font -Adobe-Helvetica-Bold-R-Normal-*-*-120-*-*-*-*-* -padx 9 \ + -pady 3 -text < entry $base.tbn \ -background #fefefe -borderwidth 1 -highlightthickness 1 \ -selectborderwidth 0 -textvariable filter @@ -1358,25 +1430,25 @@ if {[save_new_record]} { place $base.hoslbl \ -x 5 -y 5 -anchor nw -bordermode ignore place $base.fillbtn \ - -x 487 -y 1 -height 25 -anchor nw -bordermode ignore + -x 515 -y 1 -height 25 -anchor nw -bordermode ignore place $base.exitbtn \ - -x 590 -y 1 -width 39 -height 25 -anchor nw -bordermode ignore + -x 580 -y 1 -width 49 -height 25 -anchor nw -bordermode ignore place $base.c \ -x 5 -y 25 -width 608 -height 405 -anchor nw -bordermode ignore place $base.msglbl \ - -x 9 -y 430 -width 616 -height 18 -anchor nw -bordermode ignore + -x 33 -y 430 -width 567 -height 18 -anchor nw -bordermode ignore place $base.sb \ -x 610 -y 26 -width 18 -height 404 -anchor nw -bordermode ignore place $base.ert \ - -x 552 -y 1 -width 20 -height 25 -anchor nw -bordermode ignore + -x 603 -y 428 -width 25 -height 22 -anchor nw -bordermode ignore place $base.dfggfh \ - -x 570 -y 1 -width 20 -height 25 -anchor nw -bordermode ignore + -x 5 -y 428 -width 25 -height 22 -anchor nw -bordermode ignore place $base.tbn \ - -x 280 -y 3 -width 203 -height 21 -anchor nw -bordermode ignore + -x 295 -y 3 -width 203 -height 21 -anchor nw -bordermode ignore place $base.tbllbl \ - -x 180 -y 5 -anchor nw -bordermode ignore + -x 200 -y 5 -anchor nw -bordermode ignore place $base.dben \ - -x 65 -y 3 -width 81 -height 21 -anchor nw -bordermode ignore + -x 60 -y 3 -width 120 -height 21 -anchor nw -bordermode ignore } proc vTclWindow.nt {base} { @@ -1397,21 +1469,15 @@ proc vTclWindow.nt {base} { wm overrideredirect $base 0 wm resizable $base 0 0 wm title $base "Create table" - entry $base.etabn \ - -background #fefefe -borderwidth 1 -highlightthickness 1 \ - -selectborderwidth 0 -textvariable newtablename + entry $base.etabn -background #fefefe -borderwidth 1 -highlightthickness 1 -selectborderwidth 0 -textvariable newtablename bind $base.etabn { focus .nt.e2 } - entry $base.e2 \ - -background #fefefe -borderwidth 1 -highlightthickness 1 \ - -selectborderwidth 0 -textvariable fldname + entry $base.e2 -background #fefefe -borderwidth 1 -highlightthickness 1 -selectborderwidth 0 -textvariable fldname bind $base.e2 { focus .nt.e1 } - entry $base.e1 \ - -background #fefefe -borderwidth 1 -cursor {} -highlightthickness 1 \ - -selectborderwidth 0 -textvariable fldtype + entry $base.e1 -background #fefefe -borderwidth 1 -cursor {} -highlightthickness 1 -selectborderwidth 0 -textvariable fldtype bind $base.e1 { tk_popup .nt.pop %X %Y } @@ -1421,42 +1487,20 @@ proc vTclWindow.nt {base} { bind $base.e1 { tk_popup .nt.pop [expr 150+[winfo rootx .nt]] [expr 65+[winfo rooty .nt]] } - entry $base.e3 \ - -background #fefefe -borderwidth 1 -highlightthickness 1 \ - -selectborderwidth 0 -state disabled -textvariable fldsize + entry $base.e3 -background #fefefe -borderwidth 1 -highlightthickness 1 -selectborderwidth 0 -state disabled -textvariable fldsize bind $base.e3 { focus .nt.e5 } - entry $base.e5 \ - -background #fefefe -borderwidth 1 -highlightthickness 1 \ - -selectborderwidth 0 -textvariable defaultval + entry $base.e5 -background #fefefe -borderwidth 1 -highlightthickness 1 -selectborderwidth 0 -textvariable defaultval bind $base.e5 { focus .nt.cb1 } - checkbutton $base.cb1 \ - -borderwidth 1 \ - -font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* \ - -offvalue { } -onvalue { NOT NULL} -text {field cannot be null} \ - -variable notnull - label $base.lab1 \ - -borderwidth 0 \ - -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \ - -relief raised -text {Field type} - label $base.lab2 \ - -borderwidth 0 \ - -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \ - -relief raised -text {Field name} - label $base.lab3 \ - -borderwidth 0 \ - -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \ - -relief raised -text {Field size} - label $base.lab4 \ - -borderwidth 0 \ - -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \ - -relief raised -text {Default value} - button $base.addfld \ - -borderwidth 1 \ - -command {if {$fldname==""} { + checkbutton $base.cb1 -borderwidth 1 -font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -offvalue { } -onvalue { NOT NULL} -text {field cannot be null} -variable notnull + label $base.lab1 -borderwidth 0 -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -relief raised -text {Field type} + label $base.lab2 -borderwidth 0 -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -relief raised -text {Field name} + label $base.lab3 -borderwidth 0 -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -relief raised -text {Field size} + label $base.lab4 -borderwidth 0 -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -relief raised -text {Default value} + button $base.addfld -borderwidth 1 -command {if {$fldname==""} { show_error "Enter a field name" focus .nt.e2 } elseif {$fldtype==""} { @@ -1473,20 +1517,10 @@ proc vTclWindow.nt {base} { set fldname {} set fldsize {} set defaultval {} -}} \ - -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 \ - -pady 3 -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} - 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} - button $base.maketbl \ - -borderwidth 1 \ - -command {if {$newtablename==""} then { +}} -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 -pady 3 -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} + 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} + button $base.maketbl -borderwidth 1 -command {if {$newtablename==""} then { show_error "You must supply a name for your table!" focus .nt.etabn } elseif {[.nt.lb size]==0} then { @@ -1505,143 +1539,52 @@ proc vTclWindow.nt {base} { Window hide .nt cmd_Tables } -}} \ - -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 \ - -pady 3 -text {Create table} - listbox $base.lb \ - -background #fefefe -borderwidth 1 \ - -font -*-Clean-Medium-R-Normal--*-130-*-*-*-*-*-* \ - -highlightthickness 1 -selectborderwidth 0 \ - -yscrollcommand {.nt.sb set} - button $base.exitbtn \ - -borderwidth 1 -command {Window hide .nt} \ - -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 \ - -pady 3 -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 \ - -borderwidth 0 \ - -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \ - -relief raised -text {Table name} - menu $base.pop \ - -tearoff 0 - $base.pop add command \ - \ - -command {set fldtype char; if {("char"=="varchar")||("char"=="char")} then {.nt.e3 configure -state normal;focus .nt.e3} else {.nt.e3 configure -state disabled;focus .nt.e5} } \ - -font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -label char - $base.pop add command \ - \ - -command {set fldtype char2; if {("char2"=="varchar")||("char2"=="char")} then {.nt.e3 configure -state normal;focus .nt.e3} else {.nt.e3 configure -state disabled;focus .nt.e5} } \ - -font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* \ - -label char2 - $base.pop add command \ - \ - -command {set fldtype char4; if {("char4"=="varchar")||("char4"=="char")} then {.nt.e3 configure -state normal;focus .nt.e3} else {.nt.e3 configure -state disabled;focus .nt.e5} } \ - -font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* \ - -label char4 - $base.pop add command \ - \ - -command {set fldtype char8; if {("char8"=="varchar")||("char8"=="char")} then {.nt.e3 configure -state normal;focus .nt.e3} else {.nt.e3 configure -state disabled;focus .nt.e5} } \ - -font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* \ - -label char8 - $base.pop add command \ - \ - -command {set fldtype char16; if {("char16"=="varchar")||("char16"=="char")} then {.nt.e3 configure -state normal;focus .nt.e3} else {.nt.e3 configure -state disabled;focus .nt.e5} } \ - -font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* \ - -label char16 - $base.pop add command \ - \ - -command {set fldtype varchar; if {("varchar"=="varchar")||("varchar"=="char")} then {.nt.e3 configure -state normal;focus .nt.e3} else {.nt.e3 configure -state disabled;focus .nt.e5} } \ - -font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* \ - -label varchar - $base.pop add command \ - \ - -command {set fldtype text; if {("text"=="varchar")||("text"=="char")} then {.nt.e3 configure -state normal;focus .nt.e3} else {.nt.e3 configure -state disabled;focus .nt.e5} } \ - -font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -label text - $base.pop add command \ - \ - -command {set fldtype int2; if {("int2"=="varchar")||("int2"=="char")} then {.nt.e3 configure -state normal;focus .nt.e3} else {.nt.e3 configure -state disabled;focus .nt.e5} } \ - -font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -label int2 - $base.pop add command \ - \ - -command {set fldtype int4; if {("int4"=="varchar")||("int4"=="char")} then {.nt.e3 configure -state normal;focus .nt.e3} else {.nt.e3 configure -state disabled;focus .nt.e5} } \ - -font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -label int4 - $base.pop add command \ - \ - -command {set fldtype float4; if {("float4"=="varchar")||("float4"=="char")} then {.nt.e3 configure -state normal;focus .nt.e3} else {.nt.e3 configure -state disabled;focus .nt.e5} } \ - -font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* \ - -label float4 - $base.pop add command \ - \ - -command {set fldtype float8; if {("float8"=="varchar")||("float8"=="char")} then {.nt.e3 configure -state normal;focus .nt.e3} else {.nt.e3 configure -state disabled;focus .nt.e5} } \ - -font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* \ - -label float8 - $base.pop add command \ - \ - -command {set fldtype date; if {("date"=="varchar")||("date"=="char")} then {.nt.e3 configure -state normal;focus .nt.e3} else {.nt.e3 configure -state disabled;focus .nt.e5} } \ - -font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -label date - $base.pop add command \ - \ - -command {set fldtype datetime; if {("datetime"=="varchar")||("datetime"=="char")} then {.nt.e3 configure -state normal;focus .nt.e3} else {.nt.e3 configure -state disabled;focus .nt.e5} } \ - -font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* \ - -label datetime +}} -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 -pady 3 -text {Create table} + listbox $base.lb -background #fefefe -borderwidth 1 -font -*-Clean-Medium-R-Normal--*-130-*-*-*-*-*-* -highlightthickness 1 -selectborderwidth 0 -yscrollcommand {.nt.sb set} + button $base.exitbtn -borderwidth 1 -command {Window hide .nt} -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 -pady 3 -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 -borderwidth 0 -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -relief raised -text {Table name} + menu $base.pop -tearoff 0 + $base.pop add command -command {set fldtype char; if {("char"=="varchar")||("char"=="char")} then {.nt.e3 configure -state normal;focus .nt.e3} else {.nt.e3 configure -state disabled;focus .nt.e5} } -font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -label char + $base.pop add command -command {set fldtype char2; if {("char2"=="varchar")||("char2"=="char")} then {.nt.e3 configure -state normal;focus .nt.e3} else {.nt.e3 configure -state disabled;focus .nt.e5} } -font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -label char2 + $base.pop add command -command {set fldtype char4; if {("char4"=="varchar")||("char4"=="char")} then {.nt.e3 configure -state normal;focus .nt.e3} else {.nt.e3 configure -state disabled;focus .nt.e5} } -font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -label char4 + $base.pop add command -command {set fldtype char8; if {("char8"=="varchar")||("char8"=="char")} then {.nt.e3 configure -state normal;focus .nt.e3} else {.nt.e3 configure -state disabled;focus .nt.e5} } -font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -label char8 + $base.pop add command -command {set fldtype char16; if {("char16"=="varchar")||("char16"=="char")} then {.nt.e3 configure -state normal;focus .nt.e3} else {.nt.e3 configure -state disabled;focus .nt.e5} } -font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -label char16 + $base.pop add command -command {set fldtype varchar; if {("varchar"=="varchar")||("varchar"=="char")} then {.nt.e3 configure -state normal;focus .nt.e3} else {.nt.e3 configure -state disabled;focus .nt.e5} } -font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -label varchar + $base.pop add command -command {set fldtype text; if {("text"=="varchar")||("text"=="char")} then {.nt.e3 configure -state normal;focus .nt.e3} else {.nt.e3 configure -state disabled;focus .nt.e5} } -font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -label text + $base.pop add command -command {set fldtype int2; if {("int2"=="varchar")||("int2"=="char")} then {.nt.e3 configure -state normal;focus .nt.e3} else {.nt.e3 configure -state disabled;focus .nt.e5} } -font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -label int2 + $base.pop add command -command {set fldtype int4; if {("int4"=="varchar")||("int4"=="char")} then {.nt.e3 configure -state normal;focus .nt.e3} else {.nt.e3 configure -state disabled;focus .nt.e5} } -font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -label int4 + $base.pop add command -command {set fldtype float4; if {("float4"=="varchar")||("float4"=="char")} then {.nt.e3 configure -state normal;focus .nt.e3} else {.nt.e3 configure -state disabled;focus .nt.e5} } -font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -label float4 + $base.pop add command -command {set fldtype float8; if {("float8"=="varchar")||("float8"=="char")} then {.nt.e3 configure -state normal;focus .nt.e3} else {.nt.e3 configure -state disabled;focus .nt.e5} } -font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -label float8 + $base.pop add command -command {set fldtype date; if {("date"=="varchar")||("date"=="char")} then {.nt.e3 configure -state normal;focus .nt.e3} else {.nt.e3 configure -state disabled;focus .nt.e5} } -font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -label date + $base.pop add command -command {set fldtype datetime; if {("datetime"=="varchar")||("datetime"=="char")} then {.nt.e3 configure -state normal;focus .nt.e3} else {.nt.e3 configure -state disabled;focus .nt.e5} } -font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -label datetime ################### # SETTING GEOMETRY ################### - place $base.etabn \ - -x 95 -y 7 -anchor nw -bordermode ignore - place $base.e2 \ - -x 95 -y 40 -anchor nw -bordermode ignore - place $base.e1 \ - -x 95 -y 65 -anchor nw -bordermode ignore - place $base.e3 \ - -x 95 -y 90 -anchor nw -bordermode ignore - place $base.e5 \ - -x 95 -y 115 -anchor nw -bordermode ignore - place $base.cb1 \ - -x 95 -y 135 -anchor nw -bordermode ignore - place $base.lab1 \ - -x 10 -y 67 -anchor nw -bordermode ignore - place $base.lab2 \ - -x 10 -y 45 -anchor nw -bordermode ignore - place $base.lab3 \ - -x 10 -y 93 -anchor nw -bordermode ignore - place $base.lab4 \ - -x 10 -y 118 -anchor nw -bordermode ignore - place $base.addfld \ - -x 10 -y 175 -anchor nw -bordermode ignore - place $base.delfld \ - -x 90 -y 175 -width 82 -anchor nw -bordermode ignore - place $base.emptb \ - -x 175 -y 175 -anchor nw -bordermode ignore - place $base.maketbl \ - -x 10 -y 205 -width 161 -height 26 -anchor nw -bordermode ignore - place $base.lb \ - -x 260 -y 25 -width 353 -height 206 -anchor nw -bordermode ignore - place $base.exitbtn \ - -x 175 -y 205 -width 77 -height 26 -anchor nw -bordermode ignore - place $base.l1 \ - -x 261 -y 9 -width 98 -height 18 -anchor nw -bordermode ignore - place $base.l2 \ - -x 360 -y 9 -width 86 -height 18 -anchor nw -bordermode ignore - place $base.l3 \ - -x 446 -y 9 -width 166 -height 18 -anchor nw -bordermode ignore - place $base.sb \ - -x 610 -y 25 -width 18 -height 207 -anchor nw -bordermode ignore - place $base.l93 \ - -x 10 -y 10 -anchor nw -bordermode ignore + place $base.etabn -x 95 -y 7 -anchor nw -bordermode ignore + place $base.e2 -x 95 -y 40 -anchor nw -bordermode ignore + place $base.e1 -x 95 -y 65 -anchor nw -bordermode ignore + place $base.e3 -x 95 -y 90 -anchor nw -bordermode ignore + place $base.e5 -x 95 -y 115 -anchor nw -bordermode ignore + place $base.cb1 -x 95 -y 135 -anchor nw -bordermode ignore + place $base.lab1 -x 10 -y 67 -anchor nw -bordermode ignore + place $base.lab2 -x 10 -y 45 -anchor nw -bordermode ignore + place $base.lab3 -x 10 -y 93 -anchor nw -bordermode ignore + place $base.lab4 -x 10 -y 118 -anchor nw -bordermode ignore + place $base.addfld -x 10 -y 175 -anchor nw -bordermode ignore + place $base.delfld -x 90 -y 175 -width 82 -anchor nw -bordermode ignore + place $base.emptb -x 175 -y 175 -anchor nw -bordermode ignore + place $base.maketbl -x 10 -y 205 -width 161 -height 26 -anchor nw -bordermode ignore + place $base.lb -x 260 -y 25 -width 353 -height 206 -anchor nw -bordermode ignore + place $base.exitbtn -x 175 -y 205 -width 77 -height 26 -anchor nw -bordermode ignore + place $base.l1 -x 261 -y 9 -width 98 -height 18 -anchor nw -bordermode ignore + place $base.l2 -x 360 -y 9 -width 86 -height 18 -anchor nw -bordermode ignore + place $base.l3 -x 446 -y 9 -width 166 -height 18 -anchor nw -bordermode ignore + place $base.sb -x 610 -y 25 -width 18 -height 207 -anchor nw -bordermode ignore + place $base.l93 -x 10 -y 10 -anchor nw -bordermode ignore } proc vTclWindow.qb {base} { @@ -1662,16 +1605,9 @@ proc vTclWindow.qb {base} { wm overrideredirect $base 0 wm resizable $base 0 0 wm title $base "Query builder" - label $base.lqn \ - -borderwidth 0 \ - -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \ - -relief raised -text {Query name} - entry $base.eqn \ - -background #fefefe -borderwidth 1 -highlightthickness 1 \ - -selectborderwidth 0 -textvariable queryname - button $base.savebtn \ - -borderwidth 1 \ - -command {if {$queryname==""} then { + label $base.lqn -borderwidth 0 -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -relief raised -text {Query name} + entry $base.eqn -background #fefefe -borderwidth 1 -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!" focus .qb.eqn } else { @@ -1695,6 +1631,7 @@ proc vTclWindow.qb {base} { Window hide .qb } } else { + cursor_watch .qb set retval [catch { if {$queryoid==0} then { set pgres [pg_exec $dbc "insert into pga_queries values ('$queryname','$qtype','$qcmd')"] @@ -1702,6 +1639,7 @@ proc vTclWindow.qb {base} { set pgres [pg_exec $dbc "update pga_queries set queryname='$queryname',querytype='$qtype',querycommand='$qcmd' where oid=$queryoid"] } } errmsg] + cursor_arrow .qb if {$retval} then { show_error "Error executing query\n$errmsg" } else { @@ -1711,12 +1649,8 @@ proc vTclWindow.qb {base} { } catch {pg_result $pgres -clear} } -}} \ - -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 \ - -pady 3 -text {Save query definition} - button $base.execbtn \ - -borderwidth 1 \ - -command {Window show .mw +}} -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 -pady 3 -text {Save query definition} + button $base.execbtn -borderwidth 1 -command {Window show .mw set qcmd [.qb.text1 get 0.0 end] regsub -all "\n" $qcmd " " qcmd set layout_name $queryname @@ -1724,43 +1658,24 @@ load_layout $queryname set ds_query $qcmd set ds_updatable false set ds_isaquery true -select_records $qcmd} \ - -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 \ - -pady 3 -text {Execute query} - button $base.termbtn \ - -borderwidth 1 \ - -command {.qb.cbv configure -state normal +select_records $qcmd} -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 -pady 3 -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 hide .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-*-*-*-*-* \ - -highlightthickness 1 - checkbutton $base.cbv \ - -borderwidth 1 \ - -font -Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* \ - -text {Save this query as a view} -variable cbv +Window hide .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-*-*-*-*-* -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 ################### # SETTING GEOMETRY ################### - 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 380 -y 60 -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.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 380 -y 60 -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 } proc vTclWindow.rf {base} { @@ -1781,15 +1696,9 @@ proc vTclWindow.rf {base} { wm overrideredirect $base 0 wm resizable $base 0 0 wm title $base "Rename" - label $base.l1 \ - -borderwidth 0 \ - -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \ - -relief raised -text {New name} - entry $base.e1 \ - -background #fefefe -borderwidth 1 -textvariable newobjname - button $base.b1 \ - -borderwidth 1 \ - -command { + label $base.l1 -borderwidth 0 -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -relief raised -text {New name} + entry $base.e1 -background #fefefe -borderwidth 1 -textvariable newobjname + button $base.b1 -borderwidth 1 -command { if {$newobjname==""} { show_error "You must give object a new name!" } elseif {$activetab=="Tables"} { @@ -1814,24 +1723,15 @@ proc vTclWindow.rf {base} { Window hide .rf } } - } \ - -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 \ - -pady 3 -text Rename - button $base.b2 \ - -borderwidth 1 -command {Window hide .rf} \ - -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 \ - -pady 3 -text Cancel + } -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 -pady 3 -text Rename + button $base.b2 -borderwidth 1 -command {Window hide .rf} -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 -pady 3 -text Cancel ################### # SETTING GEOMETRY ################### - 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 - place $base.b2 \ - -x 145 -y 65 -width 70 -anchor nw -bordermode ignore + 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 + place $base.b2 -x 145 -y 65 -width 70 -anchor nw -bordermode ignore } proc vTclWindow.sqf {base} { @@ -1852,43 +1752,17 @@ proc vTclWindow.sqf {base} { wm overrideredirect $base 0 wm resizable $base 0 0 wm title $base "Sequence" - label $base.l1 \ - -anchor w -borderwidth 0 \ - -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \ - -relief raised -text {Sequence name} - entry $base.e1 \ - -borderwidth 1 -highlightthickness 1 -textvariable seq_name - label $base.l2 \ - -borderwidth 0 \ - -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \ - -relief raised -text Increment - entry $base.e2 \ - -borderwidth 1 -highlightthickness 1 -selectborderwidth 0 \ - -textvariable seq_inc - label $base.l3 \ - -borderwidth 0 \ - -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \ - -relief raised -text {Start value} - entry $base.e3 \ - -borderwidth 1 -highlightthickness 1 -selectborderwidth 0 \ - -textvariable seq_start - label $base.l4 \ - -borderwidth 0 \ - -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \ - -relief raised -text Minvalue - entry $base.e4 \ - -borderwidth 1 -highlightthickness 1 -selectborderwidth 0 \ - -textvariable seq_minval - label $base.l5 \ - -borderwidth 0 \ - -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \ - -relief raised -text Maxvalue - entry $base.e5 \ - -borderwidth 1 -highlightthickness 1 -selectborderwidth 0 \ - -textvariable seq_maxval - button $base.defbtn \ - -borderwidth 1 \ - -command { + label $base.l1 -anchor w -borderwidth 0 -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -relief raised -text {Sequence name} + entry $base.e1 -borderwidth 1 -highlightthickness 1 -textvariable seq_name + label $base.l2 -borderwidth 0 -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -relief raised -text Increment + entry $base.e2 -borderwidth 1 -highlightthickness 1 -selectborderwidth 0 -textvariable seq_inc + label $base.l3 -borderwidth 0 -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -relief raised -text {Start value} + entry $base.e3 -borderwidth 1 -highlightthickness 1 -selectborderwidth 0 -textvariable seq_start + label $base.l4 -borderwidth 0 -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -relief raised -text Minvalue + entry $base.e4 -borderwidth 1 -highlightthickness 1 -selectborderwidth 0 -textvariable seq_minval + label $base.l5 -borderwidth 0 -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -relief raised -text Maxvalue + entry $base.e5 -borderwidth 1 -highlightthickness 1 -selectborderwidth 0 -textvariable seq_maxval + button $base.defbtn -borderwidth 1 -command { if {$seq_name==""} { show_error "You should supply a name for this sequence" } else { @@ -1903,12 +1777,8 @@ proc vTclWindow.sqf {base} { tk_messageBox -title Information -message "Sequence created!" } } - } \ - -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 \ - -pady 3 -text {Define sequence} - button $base.closebtn \ - -borderwidth 1 \ - -command {for {set i 1} {$i<6} {incr i} { + } -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 -pady 3 -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 .sqf.defbtn configure -state normal @@ -1916,41 +1786,27 @@ proc vTclWindow.sqf {base} { } place .sqf.defbtn -x 40 -y 175 Window hide .sqf -} \ - -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 \ - -pady 3 -text Close +} -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 -pady 3 -text Close ################### # SETTING GEOMETRY ################### - 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 - place $base.e2 \ - -x 135 -y 49 -anchor nw -bordermode ignore - place $base.l3 \ - -x 20 -y 80 -anchor nw -bordermode ignore - place $base.e3 \ - -x 135 -y 79 -anchor nw -bordermode ignore - place $base.l4 \ - -x 20 -y 110 -anchor nw -bordermode ignore - place $base.e4 \ - -x 135 -y 109 -anchor nw -bordermode ignore - place $base.l5 \ - -x 20 -y 140 -anchor nw -bordermode ignore - place $base.e5 \ - -x 135 -y 139 -anchor nw -bordermode ignore - place $base.defbtn \ - -x 40 -y 175 -anchor nw -bordermode ignore - place $base.closebtn \ - -x 195 -y 175 -anchor nw -bordermode ignore + 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 + place $base.e2 -x 135 -y 49 -anchor nw -bordermode ignore + place $base.l3 -x 20 -y 80 -anchor nw -bordermode ignore + place $base.e3 -x 135 -y 79 -anchor nw -bordermode ignore + place $base.l4 -x 20 -y 110 -anchor nw -bordermode ignore + place $base.e4 -x 135 -y 109 -anchor nw -bordermode ignore + place $base.l5 -x 20 -y 140 -anchor nw -bordermode ignore + place $base.e5 -x 135 -y 139 -anchor nw -bordermode ignore + place $base.defbtn -x 40 -y 175 -anchor nw -bordermode ignore + place $base.closebtn -x 195 -y 175 -anchor nw -bordermode ignore } -proc vTclWindow.fw {base} { +proc vTclWindow.tiw {base} { if {$base == ""} { - set base .fw + set base .tiw } if {[winfo exists $base]} { wm deiconify $base; return @@ -1960,82 +1816,35 @@ proc vTclWindow.fw {base} { ################### toplevel $base -class Toplevel wm focusmodel $base passive - wm geometry $base 306x288+298+290 + wm geometry $base 395x309+300+240 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 "Function" - label $base.l1 \ - -borderwidth 0 \ - -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \ - -relief raised -text Name - entry $base.e1 \ - -background #fefefe -borderwidth 1 -highlightthickness 1 \ - -selectborderwidth 0 -textvariable funcname - label $base.l2 \ - -borderwidth 0 \ - -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \ - -relief raised -text Parameters - entry $base.e2 \ - -background #fefefe -borderwidth 1 -highlightthickness 1 \ - -selectborderwidth 0 -textvariable funcpar - label $base.l3 \ - -borderwidth 0 \ - -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \ - -relief raised -text Returns - entry $base.e3 \ - -background #fefefe -borderwidth 1 -highlightthickness 1 \ - -selectborderwidth 0 -textvariable funcret - text $base.text1 \ - -background #fefefe -borderwidth 1 \ - -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* \ - -highlightthickness 1 -selectborderwidth 0 - button $base.okbtn \ - -borderwidth 1 -command { - if {$funcname==""} { - show_error "You must supply a name for this function!" - } elseif {$funcret==""} { - show_error "You must supply a return type!" - } else { - set funcbody [.fw.text1 get 1.0 end] - regsub -all "\n" $funcbody " " funcbody - if {[sql_exec noquiet "create function $funcname ($funcpar) returns $funcret as '$funcbody' language 'sql'"]} { - Window hide .fw - tk_messageBox -title PostgreSQL -message "Function created!" - tab_click .dw.tabFunctions - } - - } - } \ - -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 \ - -pady 3 -text Define - button $base.cancelbtn \ - -borderwidth 1 -command {Window hide .fw} \ - -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 \ - -pady 3 -text Close + wm resizable $base 1 1 + wm title $base "Table information" + label $base.l1 -borderwidth 0 -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -relief raised -text {Table name} + label $base.l2 -anchor w -borderwidth 0 -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -relief raised -text facturi -textvariable tiw(tablename) + label $base.l3 -borderwidth 0 -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -relief raised -text Owner + label $base.l4 -anchor w -borderwidth 1 -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -text teo -textvariable tiw(owner) + listbox $base.lb -background #fefefe -borderwidth 1 -font -*-Clean-Medium-R-Normal--*-130-*-*-*-*-*-* -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 hide .tiw} -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -padx 9 -pady 3 -text Close + label $base.l10 -borderwidth 1 -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -relief raised -text {field name} + label $base.l11 -borderwidth 1 -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -relief raised -text {field type} + label $base.l12 -borderwidth 1 -font -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* -relief raised -text size ################### # SETTING GEOMETRY ################### - 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 - place $base.e2 \ - -x 95 -y 45 -width 198 -height 22 -anchor nw -bordermode ignore - place $base.l3 \ - -x 15 -y 78 -anchor nw -bordermode ignore - place $base.e3 \ - -x 95 -y 75 -width 198 -height 22 -anchor nw -bordermode ignore - place $base.text1 \ - -x 15 -y 105 -width 275 -height 141 -anchor nw -bordermode ignore - place $base.okbtn \ - -x 90 -y 255 -anchor nw -bordermode ignore - place $base.cancelbtn \ - -x 160 -y 255 -anchor nw -bordermode ignore + place $base.l1 -x 25 -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 25 -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 25 -y 90 -width 333 -height 176 -anchor nw -bordermode ignore + place $base.sb -x 355 -y 90 -width 18 -height 177 -anchor nw -bordermode ignore + place $base.closebtn -x 170 -y 275 -anchor nw -bordermode ignore + place $base.l10 -x 26 -y 75 -width 199 -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 } Window show .