aboutsummaryrefslogtreecommitdiff
path: root/src/bin/pgaccess/pgaccess.tcl
diff options
context:
space:
mode:
Diffstat (limited to 'src/bin/pgaccess/pgaccess.tcl')
-rw-r--r--src/bin/pgaccess/pgaccess.tcl5044
1 files changed, 0 insertions, 5044 deletions
diff --git a/src/bin/pgaccess/pgaccess.tcl b/src/bin/pgaccess/pgaccess.tcl
deleted file mode 100644
index da14d6c86a9..00000000000
--- a/src/bin/pgaccess/pgaccess.tcl
+++ /dev/null
@@ -1,5044 +0,0 @@
-#!/bin/sh
-# the next line restarts using wish \
-exec wish "$0" "$@"
-
-global widget;
-
-image create bitmap dnarw -data {
-#define down_arrow_width 15
-#define down_arrow_height 15
-static char down_arrow_bits[] = {
- 0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,
- 0x00,0x80,0xf8,0x8f,0xf0,0x87,0xe0,0x83,
- 0xc0,0x81,0x80,0x80,0x00,0x80,0x00,0x80,
- 0x00,0x80,0x00,0x80,0x00,0x80
- }
-}
-
-proc {set_default_fonts} {} {
-global pref tcl_platform
-if {[string toupper $tcl_platform(platform)]=="WINDOWS"} {
- set pref(font_normal) {"MS Sans Serif" 8}
- set pref(font_bold) {"MS Sans Serif" 8 bold}
- set pref(font_fix) {Terminal 8}
- set pref(font_italic) {"MS Sans Serif" 8 italic}
-} else {
- set pref(font_normal) -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*
- set pref(font_bold) -Adobe-Helvetica-Bold-R-Normal-*-*-120-*-*-*-*-*
- set pref(font_italic) -Adobe-Helvetica-Medium-O-Normal-*-*-120-*-*-*-*-*
- set pref(font_fix) -*-Clean-Medium-R-Normal-*-*-130-*-*-*-*-*
-}
-}
-
-proc {set_gui_pref} {} {
-global pref
-foreach wid {Label Text Button Listbox Checkbutton Radiobutton} {
- option add *$wid.font $pref(font_normal)
-}
-option add *Entry.background #fefefe
-option add *Entry.foreground #000000
-}
-
-proc {load_pref} {} {
-global pref
-set_default_fonts
-set_gui_pref
-set retval [catch {set fid [open "~/.pgaccessrc" r]}]
-if {$retval} {
- set pref(rows) 200
- set pref(tvfont) clean
- set pref(autoload) 1
- set pref(lastdb) {}
- set pref(lasthost) localhost
- set pref(lastport) 5432
- set pref(username) {}
- set pref(password) {}
-} else {
- while {![eof $fid]} {
- set pair [gets $fid]
- set pref([lindex $pair 0]) [lindex $pair 1]
- }
- close $fid
- set_gui_pref
-}
-}
-
-proc init {argc argv} {
-global dbc host pport tablist mw fldval activetab qlvar mwcount pref
-load_pref
-set host localhost
-set pport 5432
-set dbc {}
-set tablist [list Tables Queries Views Sequences Functions Reports Forms Scripts Users]
-set activetab {}
-set qlvar(yoffs) 360
-set qlvar(xoffs) 50
-set qlvar(reswidth) 150
-set qlvar(resfields) {}
-set qlvar(ressort) {}
-set qlvar(resreturn) {}
-set qlvar(rescriteria) {}
-set qlvar(restables) {}
-set qlvar(critedit) 0
-set qlvar(links) {}
-set qlvar(ntables) 0
-set qlvar(newtablename) {}
-set mwcount 0
-}
-
-init $argc $argv
-
-proc {sqlw_display} {msg} {
- if {![winfo exists .sqlw]} {return}
- .sqlw.f.t insert end "$msg\n\n"
- .sqlw.f.t see end
- set nrlines [lindex [split [.sqlw.f.t index end] .] 0]
- if {$nrlines>50} {
- .sqlw.f.t delete 1.0 3.0
- }
-}
-
-proc {wpg_exec} {db cmd} {
-global pgsql
- set pgsql(cmd) "never executed"
- set pgsql(status) "no status yet"
- set pgsql(errmsg) "no error message yet"
- if {[catch {
- sqlw_display $cmd
- set pgsql(cmd) $cmd
- set pgsql(res) [pg_exec $db $cmd]
- set pgsql(status) [pg_result $pgsql(res) -status]
- set pgsql(errmsg) [pg_result $pgsql(res) -error]
- } tclerrmsg]} {
- show_error "Tcl error executing pg_exec $cmd\n\n$tclerrmsg"
- return 0
- }
- return $pgsql(res)
-}
-
-proc {wpg_select} {args} {
- sqlw_display "[lindex $args 1]"
- uplevel pg_select $args
-}
-
-proc {anfw:add} {} {
-global anfw pgsql tiw
- if {$anfw(name)==""} {
- show_error "Empty field name ?"
- focus .anfw.e1
- return
- }
- if {$anfw(type)==""} {
- show_error "No field type ?"
- focus .anfw.e2
- return
- }
- if {![sql_exec quiet "alter table \"$tiw(tablename)\" add column \"$anfw(name)\" $anfw(type)"]} {
- show_error "Cannot add column\n\nPostgreSQL error: $pgsql(errmsg)"
- return
- }
- Window destroy .anfw
- sql_exec quiet "update pga_layout set colnames=colnames || ' {$anfw(name)}', colwidth=colwidth || ' 150',nrcols=nrcols+1 where tablename='$tiw(tablename)'"
- show_table_information $tiw(tablename)
-}
-
-proc {add_new_field} {} {
-global ntw
-if {$ntw(fldname)==""} {
- show_error "Enter a field name"
- focus .nt.e2
- return
-}
-if {$ntw(fldtype)==""} {
- show_error "The field type is not specified!"
- return
-}
-if {($ntw(fldtype)=="varchar")&&($ntw(fldsize)=="")} {
- focus .nt.e3
- show_error "You must specify field size!"
- return
-}
-if {$ntw(fldsize)==""} then {set sup ""} else {set sup "($ntw(fldsize))"}
-if {[regexp $ntw(fldtype) "varchartextdatetime"]} {set supc "'"} else {set supc ""}
-if {$ntw(defaultval)==""} then {set sup2 ""} else {set sup2 " DEFAULT $supc$ntw(defaultval)$supc"}
-# Checking for field name collision
-set inspos end
-for {set i 0} {$i<[.nt.lb size]} {incr i} {
- set linie [.nt.lb get $i]
- if {$ntw(fldname)==[string trim [string range $linie 2 33]]} {
- if {[tk_messageBox -title Warning -parent .nt -message "There is another field with the same name: \"$ntw(fldname)\"!\n\nReplace it ?" -type yesno -default yes]=="no"} return
- .nt.lb delete $i
- set inspos $i
- break
- }
- }
-.nt.lb insert $inspos [format "%1s %-32.32s %-14s%-16s" $ntw(pk) $ntw(fldname) $ntw(fldtype)$sup $sup2$ntw(notnull)]
-focus .nt.e2
-set ntw(fldname) {}
-set ntw(fldsize) {}
-set ntw(defaultval) {}
-set ntw(pk) " "
-}
-
-proc {create_table} {} {
-global dbc ntw
-if {$ntw(newtablename)==""} then {
- show_error "You must supply a name for your table!"
- focus .nt.etabn
- return
-}
-if {[.nt.lb size]==0} then {
- show_error "Your table has no fields!"
- focus .nt.e2
- return
-}
-set fl {}
-set pkf {}
-foreach line [.nt.lb get 0 end] {
- set fldname "\"[string trim [string range $line 2 33]]\""
- lappend fl "$fldname [string trim [string range $line 35 end]]"
- if {[string range $line 0 0]=="*"} {
- lappend pkf "$fldname"
- }
-}
-set temp "create table \"$ntw(newtablename)\" ([join $fl ,]"
-if {$ntw(constraint)!=""} then {set temp "$temp, constraint \"$ntw(constraint)\""}
-if {$ntw(check)!=""} then {set temp "$temp check ($ntw(check))"}
-if {[llength $pkf]>0} then {set temp "$temp, primary key([join $pkf ,])"}
-set temp "$temp)"
-if {$ntw(fathername)!=""} then {set temp "$temp inherits ($ntw(fathername))"}
-cursor_clock
-if {[sql_exec noquiet $temp]} {
- Window destroy .nt
- cmd_Tables
-}
-cursor_normal
-}
-
-proc {cmd_Delete} {} {
-global dbc activetab
-if {$dbc==""} return;
-set objtodelete [get_dwlb_Selection]
-if {$objtodelete==""} return;
-set temp {}
-switch $activetab {
- Tables {
- if {[tk_messageBox -title "FINAL WARNING" -parent .dw -message "You are going to delete table:\n\n$objtodelete\n\nProceed ?" -type yesno -default no]=="yes"} {
- sql_exec noquiet "drop table \"$objtodelete\""
- sql_exec quiet "delete from pga_layout where tablename='$objtodelete'"
- cmd_Tables
- }
- }
- Views {
- if {[tk_messageBox -title "FINAL WARNING" -parent .dw -message "You are going to delete view:\n\n$objtodelete\n\nProceed ?" -type yesno -default no]=="yes"} {
- sql_exec noquiet "drop view \"$objtodelete\""
- sql_exec quiet "delete from pga_layout where tablename='$objtodelete'"
- cmd_Views
- }
- }
- Queries {
- if {[tk_messageBox -title "FINAL WARNING" -parent .dw -message "You are going to delete query:\n\n$objtodelete\n\nProceed ?" -type yesno -default no]=="yes"} {
- sql_exec quiet "delete from pga_queries where queryname='$objtodelete'"
- sql_exec quiet "delete from pga_layout where tablename='$objtodelete'"
- cmd_Queries
- }
- }
- Scripts {
- if {[tk_messageBox -title "FINAL WARNING" -parent .dw -message "You are going to delete script:\n\n$objtodelete\n\nProceed ?" -type yesno -default no]=="yes"} {
- sql_exec quiet "delete from pga_scripts where scriptname='$objtodelete'"
- cmd_Scripts
- }
- }
- Forms {
- if {[tk_messageBox -title "FINAL WARNING" -parent .dw -message "You are going to delete form:\n\n$objtodelete\n\nProceed ?" -type yesno -default no]=="yes"} {
- sql_exec quiet "delete from pga_forms where formname='$objtodelete'"
- cmd_Forms
- }
- }
- Sequences {
- if {[tk_messageBox -title "FINAL WARNING" -parent .dw -message "You are going to delete sequence:\n\n$objtodelete\n\nProceed ?" -type yesno -default no]=="yes"} {
- sql_exec quiet "drop sequence \"$objtodelete\""
- cmd_Sequences
- }
- }
- Functions {
- if {[tk_messageBox -title "FINAL WARNING" -parent .dw -message "You are going to delete function:\n\n$objtodelete\n\nProceed ?" -type yesno -default no]=="yes"} {
- delete_function $objtodelete
- cmd_Functions
- }
- }
- Reports {
- if {[tk_messageBox -title "FINAL WARNING" -parent .dw -message "You are going to delete report:\n\n$objtodelete\n\nProceed ?" -type yesno -default no]=="yes"} {
- sql_exec noquiet "delete from pga_reports where reportname='$objtodelete'"
- cmd_Reports
- }
- }
- Users {
- if {[tk_messageBox -title "FINAL WARNING" -parent .dw -message "You are going to delete user:\n\n$objtodelete\n\nProceed ?" -type yesno -default no]=="yes"} {
- sql_exec noquiet "drop user \"$objtodelete\""
- cmd_Users
- }
- }
-}
-if {$temp==""} return;
-}
-
-proc {cmd_Design} {} {
-global dbc activetab rbvar uw
-if {$dbc==""} return;
-if {[.dw.lb curselection]==""} return;
-set objname [.dw.lb get [.dw.lb curselection]]
-set tablename $objname
-switch $activetab {
- Queries {open_query design}
- Views {open_view_design}
- Scripts {design_script $objname}
- Forms {fd_load_form $objname design}
- Reports {
- Window show .rb
- tkwait visibility .rb
- rb_init
- set rbvar(reportname) $objname
- rb_load_report
- set rbvar(justpreview) 0
- }
- Users {
- Window show .uw
- tkwait visibility .uw
- wm transient .uw .dw
- wm title .uw "Design user"
- set uw(username) $objname
- set uw(password) {} ; set uw(verify) {}
- pg_select $dbc "select *,date(valuntil) as valdata from pg_user where usename='$objname'" tup {
- if {$tup(usesuper)=="t"} {
- set uw(createuser) CREATEUSER
- } else {
- set uw(createuser) NOCREATEUSER
- }
- if {$tup(usecreatedb)=="t"} {
- set uw(createdb) CREATEDB
- } else {
- set uw(createdb) NOCREATEDB
- }
- if {$tup(valuntil)!=""} {
- set uw(valid) $tup(valdata)
- } else {
- set uw(valid) {}
- }
- }
- .uw.e1 configure -state disabled
- .uw.b1 configure -text Alter
- focus .uw.e2
- }
-}
-}
-
-proc {cmd_Forms} {} {
-global dbc
-cursor_clock
-.dw.lb delete 0 end
-catch {
- wpg_select $dbc "select formname from pga_forms order by formname" rec {
- .dw.lb insert end $rec(formname)
- }
-}
-cursor_normal
-}
-
-proc {cmd_Functions} {} {
-global dbc
-set maxim 16384
-cursor_clock
-catch {
- wpg_select $dbc "select oid from pg_database where datname='template1'" rec {
- set maxim $rec(oid)
- }
-}
-.dw.lb delete 0 end
-catch {
- wpg_select $dbc "select proname from pg_proc where prolang=14 and oid>$maxim order by proname" rec {
- .dw.lb insert end $rec(proname)
- }
-}
-cursor_normal
-}
-
-proc {cmd_Import_Export} {how} {
-global dbc ie_tablename ie_filename activetab
-if {$dbc==""} return;
-Window show .iew
-set ie_tablename {}
-set ie_filename {}
-set ie_delimiter {}
-if {$activetab=="Tables"} {
- set tn [get_dwlb_Selection]
- set ie_tablename $tn
- if {$tn!=""} {set ie_filename "$tn.txt"}
-}
-.iew.expbtn configure -text $how
-}
-
-proc {cmd_Information} {} {
-global dbc tiw activetab
-if {$dbc==""} return;
-if {$activetab!="Tables"} return;
-show_table_information [get_dwlb_Selection]
-}
-
-proc {cmd_New} {} {
-global dbc activetab queryname queryoid cbv funcpar funcname funcret rbvar uw
-if {$dbc==""} return;
-switch $activetab {
- Tables {
- Window show .nt
- focus .nt.etabn
- }
- Queries {
- Window show .qb
- set queryoid 0
- set queryname {}
- set cbv 0
- .qb.cbv configure -state normal
- }
- Users {
- Window show .uw
- wm transient .uw .dw
- set uw(username) {}
- set uw(password) {}
- set uw(createdb) NOCREATEDB
- set uw(createuser) NOCREATEUSER
- set uw(verify) {}
- set uw(valid) {}
- focus .uw.e1
- }
- Views {
- set queryoid 0
- set queryname {}
- Window show .qb
- set cbv 1
- .qb.cbv configure -state disabled
- }
- Sequences {
- Window show .sqf
- focus .sqf.e1
- }
- Reports {
- Window show .rb ; tkwait visibility .rb ; rb_init ; set rbvar(reportname) {} ; set rbvar(justpreview) 0
- focus .rb.e2
- }
- Forms {
- Window show .fd
- Window show .fdtb
- Window show .fdmenu
- Window show .fda
- fd_init
- }
- Scripts {
- design_script {}
- }
- Functions {
- Window show .fw
- set funcname {}
- set funcpar {}
- set funcret {}
- place .fw.okbtn -y 255
- .fw.okbtn configure -state normal
- .fw.okbtn configure -text Define
- .fw.text1 delete 1.0 end
- focus .fw.e1
- }
-}
-}
-
-proc {cmd_Open} {} {
-global dbc activetab
-if {$dbc==""} return;
-set objname [get_dwlb_Selection]
-if {$objname==""} return;
-switch $activetab {
- Tables {open_table $objname}
- Forms {open_form $objname}
- Scripts {execute_script $objname}
- Queries {open_query view}
- Views {open_view}
- Sequences {open_sequence $objname}
- Functions {open_function $objname}
- Reports {open_report $objname}
-}
-}
-
-proc {cmd_Preferences} {} {
-Window show .pw
-}
-
-proc {cmd_Queries} {} {
-global dbc
-.dw.lb delete 0 end
-catch {
- wpg_select $dbc "select queryname from pga_queries order by queryname" rec {
- .dw.lb insert end $rec(queryname)
- }
-}
-}
-
-proc {uw:create_user} {} {
-global dbc uw
-set uw(username) [string trim $uw(username)]
-set uw(password) [string trim $uw(password)]
-set uw(verify) [string trim $uw(verify)]
-if {$uw(username)==""} {
- show_error "User without name!"
- focus .uw.e1
- return
-}
-if {$uw(password)!=$uw(verify)} {
- show_error "Passwords do not match!"
- set uw(password) {} ; set uw(verify) {}
- focus .uw.e2
- return
-}
-set cmd "[.uw.b1 cget -text] user \"$uw(username)\""
-if {$uw(password)!=""} {
- set cmd "$cmd WITH PASSWORD \"$uw(password)\" "
-}
-set cmd "$cmd $uw(createdb) $uw(createuser)"
-if {$uw(valid)!=""} {
- set cmd "$cmd VALID UNTIL '$uw(valid)'"
-}
-if {[sql_exec noquiet $cmd]} {
- Window destroy .uw
- cmd_Users
-}
-}
-
-proc {cmd_Rename} {} {
-global dbc oldobjname activetab
-if {$dbc==""} return;
-if {$activetab=="Views"} return;
-if {$activetab=="Sequences"} return;
-if {$activetab=="Functions"} return;
-if {$activetab=="Users"} return;
-set temp [get_dwlb_Selection]
-if {$temp==""} {
- tk_messageBox -title Warning -parent .dw -message "Please select an object first !"
- return;
-}
-set oldobjname $temp
-Window show .rf
-}
-
-proc {cmd_Reports} {} {
-global dbc
-cursor_clock
-catch {
- wpg_select $dbc "select reportname from pga_reports order by reportname" rec {
- .dw.lb insert end "$rec(reportname)"
- }
-}
-cursor_normal
-}
-
-proc {cmd_Users} {} {
-global dbc
-cursor_clock
-.dw.lb delete 0 end
-catch {
- wpg_select $dbc "select * from pg_user order by usename" rec {
- .dw.lb insert end $rec(usename)
- }
-}
-cursor_normal
-}
-
-proc {cmd_Scripts} {} {
-global dbc
-cursor_clock
-.dw.lb delete 0 end
-catch {
- wpg_select $dbc "select scriptname from pga_scripts order by scriptname" rec {
- .dw.lb insert end $rec(scriptname)
- }
-}
-cursor_normal
-}
-
-proc {cmd_Sequences} {} {
-global dbc
-
-cursor_clock
-.dw.lb delete 0 end
-catch {
- wpg_select $dbc "select relname from pg_class where (relname not like 'pg_%') and (relkind='S') order by relname" rec {
- .dw.lb insert end $rec(relname)
- }
-}
-cursor_normal
-}
-
-proc {cmd_Tables} {} {
-global dbc
-cursor_clock
-.dw.lb delete 0 end
-foreach tbl [get_tables] {.dw.lb insert end $tbl}
-cursor_normal
-}
-
-proc {cmd_Views} {} {
-global dbc
-cursor_clock
-.dw.lb delete 0 end
-catch {
- wpg_select $dbc "select c.relname,count(c.relname) from pg_class C, pg_rewrite R where (relname !~ '^pg_') and (r.ev_class = C.oid) and (r.ev_type = '1') group by relname" rec {
- if {$rec(count)!=0} {
- set itsaview($rec(relname)) 1
- }
- }
- wpg_select $dbc "select relname from pg_class where (relname !~ '^pg_') and (relkind='r') and (relhasrules) order by relname" rec {
- if {[info exists itsaview($rec(relname))]} {
- .dw.lb insert end $rec(relname)
- }
- }
-}
-cursor_normal
-}
-
-proc {create_drop_down} {base x y w} {
-global pref
-if {[winfo exists $base.ddf]} {
- return
-}
-frame $base.ddf -borderwidth 1 -height 75 -relief raised -width 55
-listbox $base.ddf.lb -background #fefefe -foreground #000000 -selectbackground #c3c3c3 -borderwidth 1 -font $pref(font_normal) -highlightthickness 0 -selectborderwidth 0 -yscrollcommand [subst {$base.ddf.sb set}]
-scrollbar $base.ddf.sb -borderwidth 1 -command [subst {$base.ddf.lb yview}] -highlightthickness 0 -orient vert
-place $base.ddf -x $x -y $y -width $w -height 185 -anchor nw -bordermode ignore
-place $base.ddf.lb -x 1 -y 1 -width [expr $w-18] -height 182 -anchor nw -bordermode ignore
-place $base.ddf.sb -x [expr $w-15] -y 1 -width 14 -height 183 -anchor nw -bordermode ignore
-}
-
-proc {cursor_normal} {} {
- foreach wn [winfo children .] {
- catch {$wn configure -cursor left_ptr}
- }
- update ; update idletasks
-}
-
-proc {cursor_clock} {} {
- foreach wn [winfo children .] {
- catch {$wn configure -cursor watch}
- }
- update ; update idletasks
-}
-
-proc {delete_function} {objname} {
-global dbc
-wpg_select $dbc "select proargtypes,pronargs 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 {design_script} {sname} {
-global dbc scriptname
-Window show .sw
-set scriptname $sname
-.sw.src delete 1.0 end
-if {[string length $sname]==0} return;
-wpg_select $dbc "select * from pga_scripts where scriptname='$sname'" rec {
- .sw.src insert end $rec(scriptsource)
-}
-}
-
-proc {drag_it} {w x y} {
-global draglocation
- set dlo ""
- catch { set dlo $draglocation(obj) }
- if {$dlo != ""} {
- set dx [expr $x - $draglocation(x)]
- set dy [expr $y - $draglocation(y)]
- $w move $dlo $dx $dy
- set draglocation(x) $x
- set draglocation(y) $y
- }
-}
-
-proc {drag_start} {wn w x y} {
-global draglocation
-catch {unset draglocation}
-set object [$w find closest $x $y]
-if {[lsearch [$wn.c gettags $object] movable]==-1} return;
-$wn.c bind movable <Leave> {}
-set draglocation(obj) $object
-set draglocation(x) $x
-set draglocation(y) $y
-set draglocation(start) $x
-}
-
-proc {drag_stop} {wn w x y} {
-global draglocation mw dbc
- set dlo ""
- catch { set dlo $draglocation(obj) }
- if {$dlo != ""} {
- $wn.c bind movable <Leave> "$wn configure -cursor left_ptr"
- $wn configure -cursor left_ptr
- set ctr [get_tag_info $wn $draglocation(obj) v]
- set diff [expr $x-$draglocation(start)]
- if {$diff==0} return;
- set newcw {}
- for {set i 0} {$i<$mw($wn,colcount)} {incr i} {
- if {$i==$ctr} {
- lappend newcw [expr [lindex $mw($wn,colwidth) $i]+$diff]
- } else {
- lappend newcw [lindex $mw($wn,colwidth) $i]
- }
- }
- set mw($wn,colwidth) $newcw
- $wn.c itemconfigure c$ctr -width [expr [lindex $mw($wn,colwidth) $ctr]-5]
- mw_draw_headers $wn
- mw_draw_hgrid $wn
- if {$mw($wn,crtrow)!=""} {mw_show_record $wn $mw($wn,crtrow)}
- for {set i [expr $ctr+1]} {$i<$mw($wn,colcount)} {incr i} {
- $wn.c move c$i $diff 0
- }
- cursor_clock
- sql_exec quiet "update pga_layout set colwidth='$mw($wn,colwidth)' where tablename='$mw($wn,layout_name)'"
- cursor_normal
- }
-}
-
-proc {draw_tabs} {} {
-global tablist activetab
-set ypos 85
-foreach tab $tablist {
- label .dw.tab$tab -borderwidth 1 -anchor w -relief raised -text $tab
- place .dw.tab$tab -x 10 -y $ypos -height 25 -width 82 -anchor nw -bordermode ignore
- lower .dw.tab$tab
- bind .dw.tab$tab <Button-1> {tab_click %W}
- incr ypos 25
-}
-set activetab ""
-}
-
-proc {execute_script} {scriptname} {
-global dbc
- set ss {}
- wpg_select $dbc "select * from pga_scripts where scriptname='$scriptname'" rec {
- set ss $rec(scriptsource)
- }
- if {[string length $ss] > 0} {
- eval $ss
- }
-}
-
-proc {fd_change_coord} {} {
-global fdvar fdobj
-set i $fdvar(moveitemobj)
-set c $fdobj($i,c)
-set c [list $fdvar(c_left) $fdvar(c_top) [expr $fdvar(c_left)+$fdvar(c_width)] [expr $fdvar(c_top)+$fdvar(c_height)]]
-set fdobj($i,c) $c
-.fd.c delete o$i
-fd_draw_object $i
-fd_draw_hookers $i
-}
-
-proc {fd_delete_object} {} {
-global fdvar
-set i $fdvar(moveitemobj)
-.fd.c delete o$i
-.fd.c delete hook
-set j [lsearch $fdvar(objlist) $i]
-set fdvar(objlist) [lreplace $fdvar(objlist) $j $j]
-}
-
-proc {fd_draw_hook} {x y} {
-.fd.c create rectangle [expr $x-2] [expr $y-2] [expr $x+2] [expr $y+2] -fill black -tags hook
-}
-
-proc {fd_draw_hookers} {i} {
-global fdobj
-foreach {x1 y1 x2 y2} $fdobj($i,c) {}
-.fd.c delete hook
-fd_draw_hook $x1 $y1
-fd_draw_hook $x1 $y2
-fd_draw_hook $x2 $y1
-fd_draw_hook $x2 $y2
-}
-
-proc {fd_draw_object} {i} {
-global fdvar fdobj pref
-set c $fdobj($i,c)
-foreach {x1 y1 x2 y2} $c {}
-.fd.c delete o$i
-switch $fdobj($i,t) {
- button {
- fd_draw_rectangle $x1 $y1 $x2 $y2 raised #a0a0a0 o$i
- .fd.c create text [expr ($x1+$x2)/2] [expr ($y1+$y2)/2] -text $fdobj($i,l) -font $pref(font_normal) -tags o$i
- }
- text {
- fd_draw_rectangle $x1 $y1 $x2 $y2 sunken #a0a0a0 o$i
- }
- entry {
- fd_draw_rectangle $x1 $y1 $x2 $y2 sunken white o$i
- }
- label {
- .fd.c create text $x1 $y1 -text $fdobj($i,l) -font $pref(font_normal) -anchor nw -tags o$i
- }
- checkbox {
- fd_draw_rectangle [expr $x1+2] [expr $y1+5] [expr $x1+12] [expr $y1+15] raised #a0a0a0 o$i
- .fd.c create text [expr $x1+20] [expr $y1+3] -text $fdobj($i,l) -anchor nw -font $pref(font_normal) -tags o$i
- }
- radio {
- .fd.c create oval [expr $x1+4] [expr $y1+5] [expr $x1+14] [expr $y1+15] -fill white -tags o$i
- .fd.c create text [expr $x1+24] [expr $y1+3] -text $fdobj($i,l) -anchor nw -font $pref(font_normal) -tags o$i
- }
- query {
- .fd.c create oval $x1 $y1 [expr $x1+20] [expr $y1+20] -fill white -tags o$i
- .fd.c create text [expr $x1+5] [expr $y1+4] -text Q -anchor nw -font $pref(font_normal) -tags o$i
- }
- listbox {
- fd_draw_rectangle $x1 $y1 [expr $x2-12] $y2 sunken white o$i
- fd_draw_rectangle [expr $x2-11] $y1 $x2 $y2 sunken gray o$i
- .fd.c create line [expr $x2-5] $y1 $x2 [expr $y1+10] -fill #808080 -tags o$i
- .fd.c create line [expr $x2-10] [expr $y1+9] $x2 [expr $y1+9] -fill #808080 -tags o$i
- .fd.c create line [expr $x2-10] [expr $y1+9] [expr $x2-5] $y1 -fill white -tags o$i
- .fd.c create line [expr $x2-5] $y2 $x2 [expr $y2-10] -fill #808080 -tags o$i
- .fd.c create line [expr $x2-10] [expr $y2-9] $x2 [expr $y2-9] -fill white -tags o$i
- .fd.c create line [expr $x2-10] [expr $y2-9] [expr $x2-5] $y2 -fill white -tags o$i
- }
-}
-.fd.c raise hook
-}
-
-proc {fd_draw_rectangle} {x1 y1 x2 y2 relief color tag} {
-if {$relief=="raised"} {
- set c1 white
- set c2 #606060
-} else {
- set c1 #606060
- set c2 white
-}
-if {$color != "none"} {
- .fd.c create rectangle $x1 $y1 $x2 $y2 -outline "" -fill $color -tags $tag
-}
-.fd.c create line $x1 $y1 $x2 $y1 -fill $c1 -tags $tag
-.fd.c create line $x1 $y1 $x1 $y2 -fill $c1 -tags $tag
-.fd.c create line $x1 $y2 $x2 $y2 -fill $c2 -tags $tag
-.fd.c create line $x2 $y1 $x2 [expr 1+$y2] -fill $c2 -tags $tag
-}
-
-proc {fd_init} {} {
-global fdvar fdobj
-catch {unset fdvar}
-catch {unset fdobj}
-catch {.fd.c delete all}
-set fdvar(forminame) {udf0}
-set fdvar(formname) "New form"
-set fdvar(objnum) 0
-set fdvar(objlist) {}
-set fdvar(oper) none
-set fdvar(tool) point
-}
-
-proc {fd_item_click} {x y} {
-global fdvar fdobj
-set fdvar(oper) none
-set fdvar(moveitemobj) {}
-set il [.fd.c find overlapping $x $y $x $y]
-if {[llength $il]==0} return
-set tl [.fd.c gettags [lindex $il 0]]
-set i [lsearch -glob $tl o*]
-if {$i==-1} return
-set objnum [string range [lindex $tl $i] 1 end]
-set fdvar(moveitemobj) $objnum
-set fdvar(moveitemx) $x
-set fdvar(moveitemy) $y
-set fdvar(oper) move
-fd_show_attributes $objnum
-fd_draw_hookers $objnum
-}
-
-proc {fd_load_form} {name mode} {
-global fdvar fdobj dbc
-fd_init
-set fdvar(formname) $name
-if {$mode=="design"} {
- Window show .fd
- Window show .fdmenu
- Window show .fda
- Window show .fdtb
-}
-#set fid [open "$name.form" r]
-#set info [gets $fid]
-#close $fid
-set res [wpg_exec $dbc "select * from pga_forms where formname='$fdvar(formname)'"]
-set info [lindex [pg_result $res -getTuple 0] 1]
-pg_result $res -clear
-set fdvar(forminame) [lindex $info 0]
-set fdvar(objnum) [lindex $info 1]
-set fdvar(objlist) [lindex $info 2]
-set fdvar(geometry) [lindex $info 3]
-set j 0
-foreach objinfo [lrange $info 4 end] {
- foreach {t n c x l v} $objinfo {}
- set i [lindex $fdvar(objlist) $j]
- set fdobj($i,t) $t
- set fdobj($i,n) $n
- set fdobj($i,c) $c
- set fdobj($i,l) $l
- set fdobj($i,x) $x
- set fdobj($i,v) $v
- if {$mode=="design"} {fd_draw_object $i}
- incr j
-}
-if {$mode=="design"} {wm geometry .fd $fdvar(geometry)}
-}
-
-proc {fd_mouse_down} {x y} {
-global fdvar
-set x [expr 3*int($x/3)]
-set y [expr 3*int($y/3)]
-set fdvar(xstart) $x
-set fdvar(ystart) $y
-if {$fdvar(tool)=="point"} {
- fd_item_click $x $y
- return
-}
-set fdvar(oper) draw
-}
-
-proc {fd_mouse_move} {x y} {
-global fdvar
-#set fdvar(msg) "x=$x y=$y"
-set x [expr 3*int($x/3)]
-set y [expr 3*int($y/3)]
-set oper ""
-catch {set oper $fdvar(oper)}
-if {$oper=="draw"} {
- catch {.fd.c delete curdraw}
- .fd.c create rectangle $fdvar(xstart) $fdvar(ystart) $x $y -tags curdraw
- return
-}
-if {$oper=="move"} {
- set dx [expr $x-$fdvar(moveitemx)]
- set dy [expr $y-$fdvar(moveitemy)]
- .fd.c move o$fdvar(moveitemobj) $dx $dy
- .fd.c move hook $dx $dy
- set fdvar(moveitemx) $x
- set fdvar(moveitemy) $y
-}
-}
-
-proc {fd_mouse_up} {x y} {
-global fdvar fdobj
-set x [expr 3*int($x/3)]
-set y [expr 3*int($y/3)]
-if {$fdvar(oper)=="move"} {
- set fdvar(moveitem) {}
- set fdvar(oper) none
- set oc $fdobj($fdvar(moveitemobj),c)
- set dx [expr $x - $fdvar(xstart)]
- set dy [expr $y - $fdvar(ystart)]
- set newcoord [list [expr $dx+[lindex $oc 0]] [expr $dy+[lindex $oc 1]] [expr $dx+[lindex $oc 2]] [expr $dy+[lindex $oc 3]]]
- set fdobj($fdvar(moveitemobj),c) $newcoord
- fd_show_attributes $fdvar(moveitemobj)
- fd_draw_hookers $fdvar(moveitemobj)
- return
-}
-if {$fdvar(oper)!="draw"} return
-set fdvar(oper) none
-.fd.c delete curdraw
-# Check for x2<x1 or y2<y1
-if {$x<$fdvar(xstart)} {set temp $x ; set x $fdvar(xstart) ; set fdvar(xstart) $temp}
-if {$y<$fdvar(ystart)} {set temp $y ; set y $fdvar(ystart) ; set fdvar(ystart) $temp}
-# Check for too small sizes
-if {[expr $x-$fdvar(xstart)]<20} {set x [expr $fdvar(xstart)+20]}
-if {[expr $y-$fdvar(ystart)]<10} {set y [expr $fdvar(ystart)+10]}
-incr fdvar(objnum)
-set i $fdvar(objnum)
-lappend fdvar(objlist) $i
-# t=type , c=coords , n=name , l=label
-set fdobj($i,t) $fdvar(tool)
-set fdobj($i,c) [list $fdvar(xstart) $fdvar(ystart) $x $y]
-set fdobj($i,n) $fdvar(tool)$i
-set fdobj($i,l) $fdvar(tool)$i
-set fdobj($i,x) {}
-set fdobj($i,v) {}
-fd_draw_object $i
-fd_show_attributes $i
-set fdvar(moveitemobj) $i
-fd_draw_hookers $i
-set fdvar(tool) point
-}
-
-proc {fd_save_form} {name} {
-global fdvar fdobj dbc
-if {[tk_messageBox -title Warning -message "Do you want to save the form into the database ?" -type yesno -default yes]=="no"} {return 1}
-if {[string length $fdvar(forminame)]==0} {
- tk_messageBox -title Warning -message "Forms need an internal name, only literals, low case"
- return 0
-}
-if {[string length $fdvar(formname)]==0} {
- tk_messageBox -title Warning -message "Form must have a name"
- return 0
-}
-set info [list $fdvar(forminame) $fdvar(objnum) $fdvar(objlist) [wm geometry .fd]]
-foreach i $fdvar(objlist) {
- lappend info [list $fdobj($i,t) $fdobj($i,n) $fdobj($i,c) $fdobj($i,x) $fdobj($i,l) $fdobj($i,v)]
-}
-sql_exec noquiet "delete from pga_forms where formname='$fdvar(formname)'"
-regsub -all "'" $info "''" info
-sql_exec noquiet "insert into pga_forms values ('$fdvar(formname)','$info')"
-cmd_Forms
-return 1
-}
-
-proc {fd_set_command} {} {
-global fdobj fdvar
-set i $fdvar(moveitemobj)
-set fdobj($i,x) $fdvar(c_cmd)
-}
-
-proc {fd_set_name} {} {
-global fdvar fdobj
-set i $fdvar(moveitemobj)
-foreach k $fdvar(objlist) {
- if {($fdobj($k,n)==$fdvar(c_name)) && ($i!=$k)} {
- tk_messageBox -title Warning -message "There is another object (a $fdobj($k,t)) with the same name. Please change it!"
- return
- }
-}
-set fdobj($i,n) $fdvar(c_name)
-fd_show_attributes $i
-}
-
-proc {fd_set_text} {} {
-global fdvar fdobj
-set fdobj($fdvar(moveitemobj),l) $fdvar(c_text)
-fd_draw_object $fdvar(moveitemobj)
-}
-
-proc {fd_show_attributes} {i} {
-global fdvar fdobj
-set fdvar(c_info) "$fdobj($i,t) .$fdvar(forminame).$fdobj($i,n)"
-set fdvar(c_name) $fdobj($i,n)
-set c $fdobj($i,c)
-set fdvar(c_top) [lindex $c 1]
-set fdvar(c_left) [lindex $c 0]
-set fdvar(c_width) [expr [lindex $c 2]-[lindex $c 0]]
-set fdvar(c_height) [expr [lindex $c 3]-[lindex $c 1]]
-set fdvar(c_cmd) {}
-catch {set fdvar(c_cmd) $fdobj($i,x)}
-set fdvar(c_var) {}
-catch {set fdvar(c_var) $fdobj($i,v)}
-set fdvar(c_text) {}
-catch {set fdvar(c_text) $fdobj($i,l)}
-}
-
-proc {fd_test} {} {
-global fdvar fdobj dbc datasets pref
-set basewp $fdvar(forminame)
-set base .$fdvar(forminame)
-if {[winfo exists $base]} {
- wm deiconify $base; return
-}
-toplevel $base -class Toplevel
-wm focusmodel $base passive
-wm geometry $base $fdvar(geometry)
-wm maxsize $base 785 570
-wm minsize $base 1 1
-wm overrideredirect $base 0
-wm resizable $base 1 1
-wm deiconify $base
-wm title $base $fdvar(formname)
-foreach item $fdvar(objlist) {
-set coord $fdobj($item,c)
-set name $fdobj($item,n)
-set wh "-width [expr 3+[lindex $coord 2]-[lindex $coord 0]] -height [expr 3+[lindex $coord 3]-[lindex $coord 1]]"
-set visual 1
-switch $fdobj($item,t) {
- button {
- set cmd {}
- catch {set cmd $fdobj($item,x)}
- button $base.$name -borderwidth 1 -padx 0 -pady 0 -text "$fdobj($item,l)" -font $pref(font_normal) -command [subst {$cmd}]
- }
- checkbox {
- checkbutton $base.$name -onvalue t -offvalue f -font $pref(font_normal) -text "$fdobj($item,l)" -variable "$fdobj($item,v)" -borderwidth 1
- set wh {}
- }
- query {
- set visual 0
- set datasets($base.$name,sql) $fdobj($item,x)
- eval "proc $base.$name:open {} {\
- global dbc datasets tup$basewp$name ;\
- catch {unset tup$basewp$name} ;\
- set wn \[focus\] ; cursor_clock ;\
- set res \[wpg_exec \$dbc \"\$datasets($base.$name,sql)\"\] ;\
- pg_result \$res -assign tup$basewp$name ;\
- set fl {} ;\
- foreach fd \[pg_result \$res -lAttributes\] {lappend fl \[lindex \$fd 0\]} ;\
- set datasets($base.$name,fields) \$fl ;\
- set datasets($base.$name,recno) 0 ;\
- set datasets($base.$name,nrecs) \[pg_result \$res -numTuples\] ;\
- cursor_normal ;\
- }"
- eval "proc $base.$name:setsql {sqlcmd} {\
- global datasets ;\
- set datasets($base.$name,sql) \$sqlcmd ;\
- }"
- eval "proc $base.$name:nrecords {} {\
- global datasets ;\
- return \$datasets($base.$name,nrecs) ;\
- }"
- eval "proc $base.$name:crtrecord {} {\
- global datasets ;\
- return \$datasets($base.$name,recno) ;\
- }"
- eval "proc $base.$name:moveto {newrecno} {\
- global datasets ;\
- set datasets($base.$name,recno) \$newrecno ;\
- }"
- eval "proc $base.$name:close {} {
- global tup$basewp$name ;\
- catch {unset tup$basewp$name };\
- }"
- eval "proc $base.$name:fields {} {\
- global datasets ;\
- return \$datasets($base.$name,fields) ;\
- }"
- eval "proc $base.$name:fill {lb fld} {\
- global datasets tup$basewp$name ;\
- \$lb delete 0 end ;\
- for {set i 0} {\$i<\$datasets($base.$name,nrecs)} {incr i} {\
- \$lb insert end \$tup$basewp$name\(\$i,\$fld\) ;\
- }
- }"
- eval "proc $base.$name:movefirst {} {global datasets ; set datasets($base.$name,recno) 0}"
- eval "proc $base.$name:movenext {} {global datasets ; incr datasets($base.$name,recno) ; if {\$datasets($base.$name,recno)==\[$base.$name:nrecords\]} {$base.$name:movelast}}"
- eval "proc $base.$name:moveprevious {} {global datasets ; incr datasets($base.$name,recno) -1 ; if {\$datasets($base.$name,recno)==-1} {$base.$name:movefirst}}"
- eval "proc $base.$name:movelast {} {global datasets ; set datasets($base.$name,recno) \[expr \[$base.$name:nrecords\] -1\]}"
- eval "proc $base.$name:updatecontrols {} {\
- global datasets tup$basewp$name ;\
- set i \$datasets($base.$name,recno) ;\
- foreach fld \$datasets($base.$name,fields) {\
- catch {\
- upvar $basewp$name\(\$fld\) dbvar ;\
- set dbvar \$tup$basewp$name\(\$i,\$fld\) ;\
- }\
- }\
- }"
- eval "proc $base.$name:clearcontrols {} {\
- global datasets ;\
- catch { foreach fld \$datasets($base.$name,fields) {\
- catch {\
- upvar $basewp$name\(\$fld\) dbvar ;\
- set dbvar {} ;\
- }\
- }}\
- }"
- }
- radio {
- radiobutton $base.$name -font $pref(font_normal) -text "$fdobj($item,l)" -variable "$fdobj($item,v)" -value "$name" -borderwidth 1
- set wh {}
- }
- entry {
- set var {} ; catch {set var $fdobj($item,v)}
- entry $base.$name -bo 1 -ba white -selectborderwidth 0 -highlightthickness 0
- if {$var!=""} {$base.$name configure -textvar $var}
- }
- text {
- text $base.$name -font $pref(font_normal) -borderwidth 1
- }
- label {
- set wh {}
- label $base.$name -font $pref(font_normal) -anchor nw -padx 0 -pady 0 -text $fdobj($item,l)
- set var {} ; catch {set var $fdobj($item,v)}
- if {$var!=""} {$base.$name configure -textvar $var}
- }
- listbox {
- listbox $base.$name -borderwidth 1 -background white -highlightthickness 0 -selectborderwidth 0 -font $pref(font_normal) -yscrollcommand [subst {$base.sb$name set}]
- scrollbar $base.sb$name -borderwidth 1 -command [subst {$base.$name yview}] -orient vert -highlightthickness 0
- eval [subst "place $base.sb$name -x [expr [lindex $coord 2]-14] -y [expr [lindex $coord 1]-1] -width 16 -height [expr 3+[lindex $coord 3]-[lindex $coord 1]] -anchor nw -bordermode ignore"]
- }
-}
-if $visual {eval [subst "place $base.$name -x [expr [lindex $coord 0]-1] -y [expr [lindex $coord 1]-1] -anchor nw $wh -bordermode ignore"]}
-}
-}
-
-
-
-proc {get_dwlb_Selection} {} {
-set temp [.dw.lb curselection]
-if {$temp==""} return "";
-return [.dw.lb get $temp]
-}
-
-proc {get_pgtype} {oid} {
-global dbc
-set temp "unknown"
-wpg_select $dbc "select typname from pg_type where oid=$oid" rec {
- set temp $rec(typname)
-}
-return $temp
-}
-
-proc {get_tables} {} {
-global dbc
-set tbl {}
-if {[catch {
- wpg_select $dbc "select c.relname,count(c.relname) from pg_class C, pg_rewrite R where (relname !~ '^pg_') and (r.ev_class = C.oid) and (r.ev_type = '1') group by relname" rec {
- if {$rec(count)!=0} {
- set itsaview($rec(relname)) 1
- }
- }
- wpg_select $dbc "select relname from pg_class where (relname !~ '^pg_') and (relkind='r') order by relname" rec {
- if {![regexp "^pga_" $rec(relname)]} then {
- if {![info exists itsaview($rec(relname))]} {
- lappend tbl $rec(relname)
- }
- }
- }
-} gterrmsg]} {
- show_error $gterrmsg
-}
-return $tbl
-}
-
-proc {get_tag_info} {wn itemid prefix} {
-set taglist [$wn.c itemcget $itemid -tags]
-set i [lsearch -glob $taglist $prefix*]
-set thetag [lindex $taglist $i]
-return [string range $thetag 1 end]
-}
-
-proc {mw_canvas_click} {wn x y} {
-global mw
-if {![mw_exit_edit $wn]} return
-# Determining row
-for {set row 0} {$row<$mw($wn,nrecs)} {incr row} {
- if {[lindex $mw($wn,rowy) $row]>$y} break
-}
-incr row -1
-if {$y>[lindex $mw($wn,rowy) $mw($wn,last_rownum)]} {set row $mw($wn,last_rownum)}
-if {$row<0} return
-set mw($wn,row_edited) $row
-set mw($wn,crtrow) $row
-mw_show_record $wn $row
-if {$mw($wn,errorsavingnew)} return
-# Determining column
-set posx [expr -$mw($wn,leftoffset)]
-set col 0
-foreach cw $mw($wn,colwidth) {
- incr posx [expr $cw+2]
- if {$x<$posx} break
- incr col
-}
-set itlist [$wn.c find withtag r$row]
-foreach item $itlist {
- if {[get_tag_info $wn $item c]==$col} {
- mw_start_edit $wn $item $x $y
- break
- }
-}
-}
-
-proc {mw_delete_record} {wn} {
-global dbc mw
-if {!$mw($wn,updatable)} return;
-if {![mw_exit_edit $wn]} return;
-set taglist [$wn.c gettags hili]
-if {[llength $taglist]==0} return;
-set rowtag [lindex $taglist [lsearch -regexp $taglist "^r"]]
-set row [string range $rowtag 1 end]
-set oid [lindex $mw($wn,keylist) $row]
-if {[tk_messageBox -title "FINAL WARNING" -icon question -parent $wn -message "Delete current record ?" -type yesno -default no]=="no"} return
-if {[sql_exec noquiet "delete from \"$mw($wn,tablename)\" where oid=$oid"]} {
- $wn.c delete hili
-}
-}
-
-proc {mw_draw_headers} {wn} {
-global mw pref
-$wn.c delete header
-set posx [expr 5-$mw($wn,leftoffset)]
-for {set i 0} {$i<$mw($wn,colcount)} {incr i} {
- set xf [expr $posx+[lindex $mw($wn,colwidth) $i]]
- $wn.c create rectangle $posx 1 $xf 22 -fill #CCCCCC -outline "" -width 0 -tags header
- $wn.c create text [expr $posx+[lindex $mw($wn,colwidth) $i]*1.0/2] 14 -text [lindex $mw($wn,colnames) $i] -tags header -fill navy -font $pref(font_normal)
- $wn.c create line $posx 22 [expr $xf-1] 22 -fill #AAAAAA -tags header
- $wn.c create line [expr $xf-1] 5 [expr $xf-1] 22 -fill #AAAAAA -tags header
- $wn.c create line [expr $xf+1] 5 [expr $xf+1] 22 -fill white -tags header
- $wn.c create line $xf -15000 $xf 15000 -fill #CCCCCC -tags [subst {header movable v$i}]
- set posx [expr $xf+2]
-}
-set mw($wn,r_edge) $posx
-$wn.c bind movable <Button-1> "drag_start $wn %W %x %y"
-$wn.c bind movable <B1-Motion> {drag_it %W %x %y}
-$wn.c bind movable <ButtonRelease-1> "drag_stop $wn %W %x %y"
-$wn.c bind movable <Enter> "$wn configure -cursor left_side"
-$wn.c bind movable <Leave> "$wn configure -cursor left_ptr"
-}
-
-proc {mw_draw_hgrid} {wn} {
-global mw
-$wn.c delete hgrid
-set posx 10
-for {set j 0} {$j<$mw($wn,colcount)} {incr j} {
- set ledge($j) $posx
- incr posx [expr [lindex $mw($wn,colwidth) $j]+2]
- set textwidth($j) [expr [lindex $mw($wn,colwidth) $j]-5]
-}
-incr posx -6
-for {set i 0} {$i<$mw($wn,nrecs)} {incr i} {
- $wn.c create line [expr -$mw($wn,leftoffset)] [lindex $mw($wn,rowy) [expr $i+1]] [expr $posx-$mw($wn,leftoffset)] [lindex $mw($wn,rowy) [expr $i+1]] -fill gray -tags [subst {hgrid g$i}]
-}
-if {$mw($wn,updatable)} {
- set i $mw($wn,nrecs)
- set posy [expr 14+[lindex $mw($wn,rowy) $mw($wn,nrecs)]]
- $wn.c create line [expr -$mw($wn,leftoffset)] $posy [expr $posx-$mw($wn,leftoffset)] $posy -fill gray -tags [subst {hgrid g$i}]
-}
-}
-
-proc {mw_draw_new_record} {wn} {
-global mw pref
-set posx [expr 10-$mw($wn,leftoffset)]
-set posy [lindex $mw($wn,rowy) $mw($wn,last_rownum)]
-if {$pref(tvfont)=="helv"} {
- set tvfont $pref(font_normal)
-} else {
- set tvfont $pref(font_fix)
-}
-if {$mw($wn,updatable)} {
- for {set j 0} {$j<$mw($wn,colcount)} {incr j} {
- $wn.c create text $posx $posy -text * -tags [subst {r$mw($wn,nrecs) c$j q new unt}] -anchor nw -font $tvfont -width [expr [lindex $mw($wn,colwidth) $j]-5]
- incr posx [expr [lindex $mw($wn,colwidth) $j]+2]
- }
- incr posy 14
- $wn.c create line [expr -$mw($wn,leftoffset)] $posy [expr $mw($wn,r_edge)-$mw($wn,leftoffset)] $posy -fill gray -tags [subst {hgrid g$mw($wn,nrecs)}]
-}
-}
-
-proc {mw_edit_text} {wn c k} {
-global mw
-set bbin [$wn.c bbox r$mw($wn,row_edited)]
-switch $k {
- BackSpace { set dp [expr [$wn.c index $mw($wn,id_edited) insert]-1];if {$dp>=0} {$wn.c dchars $mw($wn,id_edited) $dp $dp; set mw($wn,dirtyrec) 1}}
- Home {$wn.c icursor $mw($wn,id_edited) 0}
- End {$wn.c icursor $mw($wn,id_edited) end}
- Left {$wn.c icursor $mw($wn,id_edited) [expr [$wn.c index $mw($wn,id_edited) insert]-1]}
- Delete {}
- Right {$wn.c icursor $mw($wn,id_edited) [expr [$wn.c index $mw($wn,id_edited) insert]+1]}
- Return {if {[mw_exit_edit $wn]} {$wn.c focus {}}}
- Escape {set mw($wn,dirtyrec) 0; $wn.c itemconfigure $mw($wn,id_edited) -text $mw($wn,text_initial_value); $wn.c focus {}}
- default {if {[string compare $c " "]>-1} {$wn.c insert $mw($wn,id_edited) insert $c;set mw($wn,dirtyrec) 1}}
-}
-set bbout [$wn.c bbox r$mw($wn,row_edited)]
-set dy [expr [lindex $bbout 3]-[lindex $bbin 3]]
-if {$dy==0} return
-set re $mw($wn,row_edited)
-$wn.c move g$re 0 $dy
-for {set i [expr 1+$re]} {$i<=$mw($wn,nrecs)} {incr i} {
- $wn.c move r$i 0 $dy
- $wn.c move g$i 0 $dy
- set rh [lindex $mw($wn,rowy) $i]
- incr rh $dy
- set mw($wn,rowy) [lreplace $mw($wn,rowy) $i $i $rh]
-}
-mw_show_record $wn $mw($wn,row_edited)
-# Delete is trapped by window interpreted as record delete
-# Delete {$wn.c dchars $mw($wn,id_edited) insert insert; set mw($wn,dirtyrec) 1}
-}
-
-proc {mw_exit_edit} {wn} {
-global mw dbc
-# User has edited the text ?
-if {!$mw($wn,dirtyrec)} {
- # No, unfocus text
- $wn.c focus {}
- # For restoring * to the new record position
- if {$mw($wn,id_edited)!=""} {
- if {[lsearch [$wn.c gettags $mw($wn,id_edited)] new]!=-1} {
- $wn.c itemconfigure $mw($wn,id_edited) -text $mw($wn,text_initial_value)
- }
- }
- set mw($wn,id_edited) {};set mw($wn,text_initial_value) {}
- return 1
-}
-# Trimming the spaces
-set fldval [string trim [$wn.c itemcget $mw($wn,id_edited) -text]]
-$wn.c itemconfigure $mw($wn,id_edited) -text $fldval
-if {[string compare $mw($wn,text_initial_value) $fldval]==0} {
- set mw($wn,dirtyrec) 0
- $wn.c focus {}
- set mw($wn,id_edited) {};set mw($wn,text_initial_value) {}
- return 1
-}
-cursor_clock
-set oid [lindex $mw($wn,keylist) $mw($wn,row_edited)]
-set fld [lindex $mw($wn,colnames) [get_tag_info $wn $mw($wn,id_edited) c]]
-set fillcolor black
-if {$mw($wn,row_edited)==$mw($wn,last_rownum)} {
- set fillcolor red
- set sfp [lsearch $mw($wn,newrec_fields) "\"$fld\""]
- if {$sfp>-1} {
- set mw($wn,newrec_fields) [lreplace $mw($wn,newrec_fields) $sfp $sfp]
- set mw($wn,newrec_values) [lreplace $mw($wn,newrec_values) $sfp $sfp]
- }
- lappend mw($wn,newrec_fields) "\"$fld\""
- lappend mw($wn,newrec_values) '$fldval'
- # Remove the untouched tag from the object
- $wn.c dtag $mw($wn,id_edited) unt
- $wn.c itemconfigure $mw($wn,id_edited) -fill red
- set retval 1
-} else {
- set mw($wn,msg) "Updating record ..."
- after 1000 "set mw($wn,msg) {}"
- regsub -all ' $fldval \\' sqlfldval
- set retval [sql_exec noquiet "update \"$mw($wn,tablename)\" set \"$fld\"='$sqlfldval' where oid=$oid"]
-}
-cursor_normal
-if {!$retval} {
- set mw($wn,msg) ""
- focus $wn.c
- return 0
-}
-set mw($wn,dirtyrec) 0
-$wn.c focus {}
-set mw($wn,id_edited) {};set mw($wn,text_initial_value) {}
-return 1
-}
-
-proc {mw_load_layout} {wn layoutname} {
-global dbc mw
-cursor_clock
-set mw($wn,layout_name) $layoutname
-catch {unset mw($wn,colcount) mw($wn,colnames) mw($wn,colwidth)}
-set mw($wn,layout_found) 0
-set pgres [wpg_exec $dbc "select *,oid from pga_layout where tablename='$layoutname' order by oid desc"]
-set pgs [pg_result $pgres -status]
-if {$pgs!="PGRES_TUPLES_OK"} {
- # Probably table pga_layout isn't yet defined
- sql_exec noquiet "create table pga_layout (tablename varchar(64),nrcols int2,colnames text,colwidth text)"
- sql_exec quiet "grant ALL on pga_layout to PUBLIC"
-} else {
- set nrlay [pg_result $pgres -numTuples]
- if {$nrlay>=1} {
- set layoutinfo [pg_result $pgres -getTuple 0]
- set mw($wn,colcount) [lindex $layoutinfo 1]
- set mw($wn,colnames) [lindex $layoutinfo 2]
- set mw($wn,colwidth) [lindex $layoutinfo 3]
- set goodoid [lindex $layoutinfo 4]
- set mw($wn,layout_found) 1
- }
- if {$nrlay>1} {
- show_error "Multiple ($nrlay) layout info found\n\nPlease report the bug!"
- sql_exec quiet "delete from pga_layout where (tablename='$mw($wn,tablename)') and (oid<>$goodoid)"
- }
-}
-pg_result $pgres -clear
-}
-
-proc {mw_pan_left} {wn } {
-global mw
-if {![mw_exit_edit $wn]} return;
-if {$mw($wn,leftcol)==[expr $mw($wn,colcount)-1]} return;
-set diff [expr 2+[lindex $mw($wn,colwidth) $mw($wn,leftcol)]]
-incr mw($wn,leftcol)
-incr mw($wn,leftoffset) $diff
-$wn.c move header -$diff 0
-$wn.c move q -$diff 0
-$wn.c move hgrid -$diff 0
-}
-
-proc {mw_pan_right} {wn} {
-global mw
-if {![mw_exit_edit $wn]} return;
-if {$mw($wn,leftcol)==0} return;
-incr mw($wn,leftcol) -1
-set diff [expr 2+[lindex $mw($wn,colwidth) $mw($wn,leftcol)]]
-incr mw($wn,leftoffset) -$diff
-$wn.c move header $diff 0
-$wn.c move q $diff 0
-$wn.c move hgrid $diff 0
-}
-
-proc {mw_save_new_record} {wn} {
-global dbc mw
-if {![mw_exit_edit $wn]} {return 0}
-if {$mw($wn,newrec_fields)==""} {return 1}
-set mw($wn,msg) "Saving new record ..."
-after 1000 "set mw($wn,msg) {}"
-set pgres [wpg_exec $dbc "insert into \"$mw($wn,tablename)\" ([join $mw($wn,newrec_fields) ,]) values ([join $mw($wn,newrec_values) ,])" ]
-if {[pg_result $pgres -status]!="PGRES_COMMAND_OK"} {
- set errmsg [pg_result $pgres -error]
- show_error "Error inserting new record\n\n$errmsg"
- return 0
-}
-set oid [pg_result $pgres -oid]
-lappend mw($wn,keylist) $oid
-pg_result $pgres -clear
-# Get bounds of the last record
-set lrbb [$wn.c bbox new]
-lappend mw($wn,rowy) [lindex $lrbb 3]
-$wn.c itemconfigure new -fill black
-$wn.c dtag q new
-# Replace * from untouched new row elements with " "
-foreach item [$wn.c find withtag unt] {
- $wn.c itemconfigure $item -text " "
-}
-$wn.c dtag q unt
-incr mw($wn,last_rownum)
-incr mw($wn,nrecs)
-mw_draw_new_record $wn
-set mw($wn,newrec_fields) {}
-set mw($wn,newrec_values) {}
-return 1
-}
-
-proc {mw_scroll_window} {wn par1 args} {
-global mw
-if {![mw_exit_edit $wn]} return;
-if {$par1=="scroll"} {
- set newtop $mw($wn,toprec)
- if {[lindex $args 1]=="units"} {
- incr newtop [lindex $args 0]
- } else {
- incr newtop [expr [lindex $args 0]*25]
- if {$newtop<0} {set newtop 0}
- if {$newtop>=[expr $mw($wn,nrecs)-1]} {set newtop [expr $mw($wn,nrecs)-1]}
- }
-} elseif {$par1=="moveto"} {
- set newtop [expr int([lindex $args 0]*$mw($wn,nrecs))]
-} else {
- return
-}
-if {$newtop<0} return;
-if {$newtop>=[expr $mw($wn,nrecs)-1]} return;
-set dy [expr [lindex $mw($wn,rowy) $mw($wn,toprec)]-[lindex $mw($wn,rowy) $newtop]]
-$wn.c move q 0 $dy
-$wn.c move hgrid 0 $dy
-set newrowy {}
-foreach y $mw($wn,rowy) {lappend newrowy [expr $y+$dy]}
-set mw($wn,rowy) $newrowy
-set mw($wn,toprec) $newtop
-mw_set_scrollbar $wn
-}
-
-proc {mw_select_records} {wn sql} {
-global dbc field mw pgsql pref
-set mw($wn,newrec_fields) {}
-set mw($wn,newrec_values) {}
-if {![mw_exit_edit $wn]} return;
-$wn.c delete q
-$wn.c delete header
-$wn.c delete hgrid
-$wn.c delete new
-set mw($wn,leftcol) 0
-set mw($wn,leftoffset) 0
-set mw($wn,crtrow) {}
-set mw($wn,msg) "Accessing data. Please wait ..."
-$wn.f1.b1 configure -state disabled
-cursor_clock
-set is_error 1
-if {[sql_exec noquiet "BEGIN"]} {
- if {[sql_exec noquiet "declare mycursor cursor for $sql"]} {
- set pgres [wpg_exec $dbc "fetch $pref(rows) in mycursor"]
- if {$pgsql(status)=="PGRES_TUPLES_OK"} {
- set is_error 0
- }
- }
-}
-if {$is_error} {
- sql_exec quiet "END"
- set mw($wn,msg) {}
- $wn.f1.b1 configure -state normal
- cursor_normal
- set mw($wn,msg) "Error executing : $sql"
- return
-}
-if {$mw($wn,updatable)} then {set shift 1} else {set shift 0}
-#
-# checking at least the numer of fields
-set attrlist [pg_result $pgres -lAttributes]
-if {$mw($wn,layout_found)} then {
- if { ($mw($wn,colcount) != [expr [llength $attrlist]-$shift]) ||
- ($mw($wn,colcount) != [llength $mw($wn,colnames)]) ||
- ($mw($wn,colcount) != [llength $mw($wn,colwidth)]) } then {
- # No. of columns don't match, something is wrong
- # tk_messageBox -title Information -message "Layout info changed !\nRescanning..."
- set mw($wn,layout_found) 0
- sql_exec quiet "delete from pga_layout where tablename='$mw($wn,layout_name)'"
- }
-}
-# Always take the col. names from the result
-set mw($wn,colcount) [llength $attrlist]
-if {$mw($wn,updatable)} then {incr mw($wn,colcount) -1}
-set mw($wn,colnames) {}
-# In defmw($wn,colwidth) prepare mw($wn,colwidth) (in case that not layout_found)
-set defmw($wn,colwidth) {}
-for {set i 0} {$i<$mw($wn,colcount)} {incr i} {
- lappend mw($wn,colnames) [lindex [lindex $attrlist [expr {$i+$shift}]] 0]
- lappend defmw($wn,colwidth) 150
-}
-if {!$mw($wn,layout_found)} {
- set mw($wn,colwidth) $defmw($wn,colwidth)
- sql_exec quiet "insert into pga_layout values ('$mw($wn,layout_name)',$mw($wn,colcount),'$mw($wn,colnames)','$mw($wn,colwidth)')"
- set mw($wn,layout_found) 1
-}
-set mw($wn,nrecs) [pg_result $pgres -numTuples]
-if {$mw($wn,nrecs)>$pref(rows)} {
- set mw($wn,msg) "Only first $pref(rows) records from $mw($wn,nrecs) have been loaded"
- set mw($wn,nrecs) $pref(rows)
-}
-set tagoid {}
-if {$pref(tvfont)=="helv"} {
- set tvfont $pref(font_normal)
-} else {
- set tvfont $pref(font_fix)
-}
-# Computing column's left edge
-set posx 10
-for {set j 0} {$j<$mw($wn,colcount)} {incr j} {
- set ledge($j) $posx
- incr posx [expr {[lindex $mw($wn,colwidth) $j]+2}]
- set textwidth($j) [expr {[lindex $mw($wn,colwidth) $j]-5}]
-}
-incr posx -6
-set posy 24
-mw_draw_headers $wn
-set mw($wn,updatekey) oid
-set mw($wn,keylist) {}
-set mw($wn,rowy) {24}
-set mw($wn,msg) "Loading maximum $pref(rows) records ..."
-set wupdatable $mw($wn,updatable)
-for {set i 0} {$i<$mw($wn,nrecs)} {incr i} {
- set curtup [pg_result $pgres -getTuple $i]
- if {$wupdatable} then {lappend mw($wn,keylist) [lindex $curtup 0]}
- for {set j 0} {$j<$mw($wn,colcount)} {incr j} {
- $wn.c create text $ledge($j) $posy -text [lindex $curtup [expr {$j+$shift}]] -tags [subst {r$i c$j q}] -anchor nw -font $tvfont -width $textwidth($j) -fill black
- }
- set bb [$wn.c bbox r$i]
- incr posy [expr {[lindex $bb 3]-[lindex $bb 1]}]
- lappend mw($wn,rowy) $posy
- $wn.c create line 0 [lindex $bb 3] $posx [lindex $bb 3] -fill gray -tags [subst {hgrid g$i}]
- if {$i==25} {update; update idletasks}
-}
-after 3000 "set mw($wn,msg) {}"
-set mw($wn,last_rownum) $i
-# Defining position for input data
-mw_draw_new_record $wn
-pg_result $pgres -clear
-sql_exec quiet "END"
-set mw($wn,toprec) 0
-mw_set_scrollbar $wn
-if {$mw($wn,updatable)} then {
- $wn.c bind q <Key> "mw_edit_text $wn %A %K"
-} else {
- $wn.c bind q <Key> {}
-}
-set mw($wn,dirtyrec) 0
-$wn.c raise header
-$wn.f1.b1 configure -state normal
-cursor_normal
-}
-
-proc {mw_set_scrollbar} {wn} {
-global mw
-if {$mw($wn,nrecs)==0} return;
-$wn.sb set [expr $mw($wn,toprec)*1.0/$mw($wn,nrecs)] [expr ($mw($wn,toprec)+27.0)/$mw($wn,nrecs)]
-}
-
-proc {mw_reload} {wn} {
-global mw
-set nq $mw($wn,query)
-if {($mw($wn,isaquery)) && ("$mw($wn,filter)$mw($wn,sortfield)"!="")} {
- show_error "Sorting and filtering not (yet) available from queries!\n\nPlease enter them in the query definition!"
- set mw($wn,sortfield) {}
- set mw($wn,filter) {}
-} else {
- if {$mw($wn,filter)!=""} {
- set nq "$mw($wn,query) where ($mw($wn,filter))"
- } else {
- set nq $mw($wn,query)
- }
- if {$mw($wn,sortfield)!=""} {
- set nq "$nq order by $mw($wn,sortfield)"
- }
-}
-if {[mw_save_new_record $wn]} {mw_select_records $wn $nq}
-}
-
-proc {mw_show_record} {wn row} {
-global mw
-set mw($wn,errorsavingnew) 0
-if {$mw($wn,newrec_fields)!=""} {
- if {$row!=$mw($wn,last_rownum)} {
- if {![mw_save_new_record $wn]} {
- set mw($wn,errorsavingnew) 1
- return
- }
- }
-}
-set y1 [lindex $mw($wn,rowy) $row]
-set y2 [lindex $mw($wn,rowy) [expr $row+1]]
-if {$y2==""} {set y2 [expr $y1+14]}
-$wn.c dtag hili hili
-$wn.c addtag hili withtag r$row
-# Making a rectangle arround the record
-set x 3
-foreach wi $mw($wn,colwidth) {incr x [expr $wi+2]}
-$wn.c delete crtrec
-$wn.c create rectangle [expr -1-$mw($wn,leftoffset)] $y1 [expr $x-$mw($wn,leftoffset)] $y2 -fill #EEEEEE -outline {} -tags {q crtrec}
-$wn.c lower crtrec
-}
-
-proc {mw_start_edit} {wn id x y} {
-global mw
-if {!$mw($wn,updatable)} return
-set mw($wn,id_edited) $id
-set mw($wn,dirtyrec) 0
-set mw($wn,text_initial_value) [$wn.c itemcget $id -text]
-focus $wn.c
-$wn.c focus $id
-$wn.c icursor $id @$x,$y
-if {$mw($wn,row_edited)==$mw($wn,nrecs)} {
- if {[$wn.c itemcget $id -text]=="*"} {
- $wn.c itemconfigure $id -text ""
- $wn.c icursor $id 0
- }
-}
-}
-
-proc {open_database} {} {
-global dbc host pport dbname username password newusername newpassword sdbname newdbname newhost newpport pref pgsql
-cursor_clock
-if {$newusername!=""} {
- set connres [catch {set newdbc [pg_connect -conninfo "host=$newhost port=$newpport dbname=$newdbname user=$newusername password=$newpassword"]} msg]
-} else {
- set connres [catch {set newdbc [pg_connect $newdbname -host $newhost -port $newpport]} msg]
-}
-if {$connres} {
- cursor_normal
- show_error "Error trying to connect to database \"$newdbname\" on host $newhost\n\nPostgreSQL error message: $msg"
- return $msg
-} else {
- catch {pg_disconnect $dbc}
- set dbc $newdbc
- set host $newhost
- set pport $newpport
- set dbname $newdbname
- set username $newusername
- set password $newpassword
- set sdbname $dbname
- set pref(lastdb) $dbname
- set pref(lasthost) $host
- set pref(lastport) $pport
- set pref(lastusername) $username
- save_pref
- catch {cursor_normal ; Window hide .dbod}
- tab_click .dw.tabTables
- # Check for pga_ tables
- foreach {table structure} { pga_queries {queryname varchar(64),querytype char(1),querycommand text} pga_forms {formname varchar(64),formsource text} pga_scripts {scriptname varchar(64),scriptsource text} pga_reports {reportname varchar(64),reportsource text,reportbody text,reportprocs text,reportoptions text}} {
- set pgres [wpg_exec $dbc "select relname from pg_class where relname='$table'"]
- if {$pgsql(status)!="PGRES_TUPLES_OK"} {
- show_error "FATAL ERROR searching for PgAccess system tables : $pgsql(errmsg)\nStatus:$pgsql(status)"
- catch {pg_disconnect $dbc}
- exit
- } elseif {[pg_result $pgres -numTuples]==0} {
- pg_result $pgres -clear
- sql_exec quiet "create table $table ($structure)"
- sql_exec quiet "grant ALL on $table to PUBLIC"
- }
- catch {pg_result $pgres -clear}
- }
- # searching for autoexec script
- wpg_select $dbc "select * from pga_scripts where scriptname ~* '^autoexec$'" recd {
- eval $recd(scriptsource)
- }
- return ""
-}
-}
-
-proc {open_form} {formname} {
- fd_load_form $formname run
- fd_test
-}
-
-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
-wpg_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_report} {objname} {
-global dbc rbvar
-Window show .rb
-#tkwait visibility .rb
-Window hide .rb
-Window show .rpv
-rb_init
-set rbvar(reportname) $objname
-rb_load_report
-tkwait visibility .rpv
-set rbvar(justpreview) 1
-rb_preview
-}
-
-proc {open_view_design} {} {
-global dbc cbv queryname
-set viewname [.dw.lb get [.dw.lb curselection]]
-set vd {}
-wpg_select $dbc "select pg_get_viewdef('$viewname')as vd" tup {
- set vd $tup(vd)
-}
-if {$vd==""} {
- show_error "Error retrieving view definition for '$viewname'!"
- return
-}
-Window show .qb
-.qb.text1 delete 0.0 end
-.qb.text1 insert end $vd
-set cbv 1
-.qb.cbv configure -state disabled
-set queryname $viewname
-}
-
-proc {open_query} {how} {
-global dbc queryname mw queryoid
-
-if {[.dw.lb curselection]==""} return;
-set queryname [.dw.lb get [.dw.lb curselection]]
-if {[set pgres [wpg_exec $dbc "select querycommand,querytype,oid from pga_queries where queryname='$queryname'"]]==0} then {
- show_error "Error retrieving query definition"
- return
-}
-if {[pg_result $pgres -numTuples]==0} {
- show_error "Query $queryname was not found!"
- pg_result $pgres -clear
- return
-}
-set tuple [pg_result $pgres -getTuple 0]
-set qcmd [lindex $tuple 0]
-set qtype [lindex $tuple 1]
-set queryoid [lindex $tuple 2]
-pg_result $pgres -clear
-if {$how=="design"} {
- Window show .qb
- .qb.text1 delete 0.0 end
- .qb.text1 insert end $qcmd
-} else {
- if {$qtype=="S"} then {
- set wn [mw_get_new_name]
- set mw($wn,query) [subst $qcmd]
- set mw($wn,updatable) 0
- set mw($wn,isaquery) 1
- mw_create_window
- wm title $wn "Query result: $queryname"
- mw_load_layout $wn $queryname
- mw_select_records $wn $mw($wn,query)
- } else {
- set answ [tk_messageBox -title Warning -type yesno -message "This query is an action query!\n\n[string range $qcmd 0 30] ...\n\nDo you want to execute it?"]
- if {$answ} {
- if {[sql_exec noquiet $qcmd]} {
- tk_messageBox -title Information -message "Your query has been executed without error!"
- }
- }
- }
-}
-}
-
-proc {mw_free_variables} {wn} {
-global mw
- foreach varname [array names mw $wn,*] {
- unset mw($varname)
- }
-}
-
-proc {mw_get_new_name} {} {
-global mw mwcount
-incr mwcount
-set wn .mw$mwcount
-set mw($wn,dirtyrec) 0
-set mw($wn,id_edited) {}
-set mw($wn,filter) {}
-set mw($wn,sortfield) {}
-return .mw$mwcount
-}
-
-proc {open_sequence} {objname} {
-global dbc seq_name seq_inc seq_start seq_minval seq_maxval
-Window show .sqf
-set flag 1
-wpg_select $dbc "select * from \"$objname\"" rec {
- set flag 0
- set seq_name $objname
- set seq_inc $rec(increment_by)
- set seq_start $rec(last_value)
- .sqf.l3 configure -text "Last value"
- set seq_minval $rec(min_value)
- set seq_maxval $rec(max_value)
- .sqf.defbtn configure -state disabled
- place .sqf.defbtn -x 40 -y 300
-}
-if {$flag} {
- show_error "Sequence $objname not found!"
-} else {
- for {set i 1} {$i<6} {incr i} {
- .sqf.e$i configure -state disabled
- }
- focus .sqf.closebtn
-}
-}
-
-proc {open_table} {objname} {
-global mw sortfield filter
-set sortfield {}
-set filter {}
-set wn [mw_get_new_name]
-mw_create_window
-set mw($wn,tablename) $objname
-mw_load_layout $wn $objname
-set mw($wn,query) "select oid,\"$objname\".* from \"$objname\""
-set mw($wn,updatable) 1
-set mw($wn,isaquery) 0
-mw_select_records $wn $mw($wn,query)
-catch {wm title $wn "Table viewer : $objname"}
-}
-
-proc {open_view} {} {
-global mw
-set vn [get_dwlb_Selection]
-if {$vn==""} return;
-set wn [mw_get_new_name]
-mw_create_window
-set mw($wn,query) "select * from \"$vn\""
-set mw($wn,isaquery) 0
-set mw($wn,updatable) 0
-mw_load_layout $wn $vn
-mw_select_records $wn $mw($wn,query)
-}
-
-proc {rename_column} {} {
-global dbc tiw
- if {[string length [string trim $tiw(new_cn)]]==0} {
- show_error "Field name not entered!"
- return
- }
- set old_name [string trim [string range $tiw(old_cn) 0 31]]
- set tiw(new_cn) [string trim $tiw(new_cn)]
- if {$old_name == $tiw(new_cn)} {
- show_error "New name is the same as the old one !"
- return
- }
- foreach line [.tiw.lb get 0 end] {
- if {[string trim [string range $line 0 31]]==$tiw(new_cn)} {
- show_error "Colum name \"$tiw(new_cn)\" already exists in this table!"
- return
- }
- }
- if {[sql_exec noquiet "alter table \"$tiw(tablename)\" rename column \"$old_name\" to \"$tiw(new_cn)\""]} {
- set temp $tiw(col_id)
- .tiw.lb delete $temp $temp
- .tiw.lb insert $temp "[format %-32.32s $tiw(new_cn)] [string range $tiw(old_cn) 33 end]"
- Window destroy .rcw
- }
-}
-
-proc {parameter} {msg} {
-global gpw
-Window show .gpw
-focus .gpw.e1
-set gpw(var) ""
-set gpw(flag) 0
-set gpw(msg) $msg
-bind .gpw <Destroy> "set gpw(flag) 1"
-grab .gpw
-tkwait variable gpw(flag)
-if {$gpw(result)} {
- return $gpw(var)
-} else {
- return ""
-}
-}
-
-proc {ql_add_new_table} {} {
-global qlvar dbc
-
-if {$qlvar(newtablename)==""} return
-set fldlist {}
-cursor_clock
-wpg_select $dbc "select attnum,attname from pg_class,pg_attribute where (pg_class.relname='$qlvar(newtablename)') and (pg_class.oid=pg_attribute.attrelid) and (attnum>0) order by attnum" rec {
- lappend fldlist $rec(attname)
-}
-cursor_normal
-if {$fldlist==""} {
- show_error "Table $qlvar(newtablename) not found!"
- return
-}
-set qlvar(tablename$qlvar(ntables)) $qlvar(newtablename)
-set qlvar(tablestruct$qlvar(ntables)) $fldlist
-set qlvar(tablealias$qlvar(ntables)) "t$qlvar(ntables)"
-set qlvar(ali_t$qlvar(ntables)) $qlvar(newtablename)
-incr qlvar(ntables)
-if {$qlvar(ntables)==1} {
- ql_draw_lizzard
-} else {
- ql_draw_table [expr $qlvar(ntables)-1]
-}
-set qlvar(newtablename) {}
-focus .ql.entt
-}
-
-proc {ql_compute_sql} {} {
-global qlvar
-set sqlcmd "select "
-#rjr 8Mar1999 added logical return state for results
-for {set i 0} {$i<[llength $qlvar(resfields)]} {incr i} {
- if {[lindex $qlvar(resreturn) $i]} {
- if {$sqlcmd!="select "} {set sqlcmd "$sqlcmd, "}
- set sqlcmd "$sqlcmd[lindex $qlvar(restables) $i].\"[lindex $qlvar(resfields) $i]\""
-}
-}
-set tables {}
-for {set i 0} {$i<$qlvar(ntables)} {incr i} {
- set thename {}
- catch {set thename $qlvar(tablename$i)}
- if {$thename!=""} {lappend tables "\"$qlvar(tablename$i)\" $qlvar(tablealias$i)"}
-}
-set sqlcmd "$sqlcmd from [join $tables ,] "
-set sup1 {}
-if {[llength $qlvar(links)]>0} {
- set sup1 "where "
- foreach link $qlvar(links) {
- if {$sup1!="where "} {set sup1 "$sup1 and "}
- set sup1 "$sup1 ([lindex $link 0].\"[lindex $link 1]\"=[lindex $link 2].\"[lindex $link 3]\")"
- }
-}
-for {set i 0} {$i<[llength $qlvar(resfields)]} {incr i} {
- set crit [lindex $qlvar(rescriteria) $i]
- if {$crit!=""} {
- if {$sup1==""} {set sup1 "where "}
- if {[string length $sup1]>6} {set sup1 "$sup1 and "}
- set sup1 "$sup1 ([lindex $qlvar(restables) $i].\"[lindex $qlvar(resfields) $i]\" $crit) "
- }
-}
-set sqlcmd "$sqlcmd $sup1"
-set sup2 {}
-for {set i 0} {$i<[llength $qlvar(ressort)]} {incr i} {
- set how [lindex $qlvar(ressort) $i]
- if {$how!="unsorted"} {
- if {$how=="Ascending"} {set how asc} else {set how desc}
- if {$sup2==""} {set sup2 " order by "} else {set sup2 "$sup2,"}
- set sup2 "$sup2 [lindex $qlvar(restables) $i].\"[lindex $qlvar(resfields) $i]\" $how "
- }
-}
-set sqlcmd "$sqlcmd $sup2"
-set qlvar(sql) $sqlcmd
-#tk_messageBox -message $sqlcmd
-return $sqlcmd
-}
-
-proc {ql_delete_object} {} {
-global qlvar
-# Checking if there
-set obj [.ql.c find withtag hili]
-if {$obj==""} return
-# Is object a link ?
-if {[ql_get_tag_info $obj link]=="s"} {
- if {[tk_messageBox -title WARNING -icon question -parent .ql -message "Remove link ?" -type yesno -default no]=="no"} return
- set linkid [ql_get_tag_info $obj lkid]
- set qlvar(links) [lreplace $qlvar(links) $linkid $linkid]
- .ql.c delete links
- ql_draw_links
- return
-}
-# Is object a result field ?
-if {[ql_get_tag_info $obj res]=="f"} {
- set col [ql_get_tag_info $obj col]
- if {$col==""} return
- if {[tk_messageBox -title WARNING -icon question -parent .ql -message "Remove field from result ?" -type yesno -default no]=="no"} return
- set qlvar(resfields) [lreplace $qlvar(resfields) $col $col]
- set qlvar(ressort) [lreplace $qlvar(ressort) $col $col]
- set qlvar(resreturn) [lreplace $qlvar(resreturn) $col $col]
- set qlvar(restables) [lreplace $qlvar(restables) $col $col]
- set qlvar(rescriteria) [lreplace $qlvar(rescriteria) $col $col]
- ql_draw_res_panel
- return
-}
-# Is object a table ?
-set tablealias [ql_get_tag_info $obj tab]
-set tablename $qlvar(ali_$tablealias)
-if {"$tablename"==""} return
-if {[tk_messageBox -title WARNING -icon question -parent .ql -message "Remove table $tablename from query ?" -type yesno -default no]=="no"} return
-for {set i [expr [llength $qlvar(restables)]-1]} {$i>=0} {incr i -1} {
- if {"$tablename"==[lindex $qlvar(restables) $i]} {
- set qlvar(resfields) [lreplace $qlvar(resfields) $i $i]
- set qlvar(ressort) [lreplace $qlvar(ressort) $i $i]
- set qlvar(resreturn) [lreplace $qlvar(resreturn) $i $i]
- set qlvar(restables) [lreplace $qlvar(restables) $i $i]
- set qlvar(rescriteria) [lreplace $qlvar(rescriteria) $i $i]
- }
-}
-for {set i [expr [llength $qlvar(links)]-1]} {$i>=0} {incr i -1} {
- set thelink [lindex $qlvar(links) $i]
- if {($tablealias==[lindex $thelink 0]) || ($tablealias==[lindex $thelink 2])} {
- set qlvar(links) [lreplace $qlvar(links) $i $i]
- }
-}
-for {set i 0} {$i<$qlvar(ntables)} {incr i} {
- set temp {}
- catch {set temp $qlvar(tablename$i)}
- if {"$temp"=="$tablename"} {
- unset qlvar(tablename$i)
- unset qlvar(tablestruct$i)
- unset qlvar(tablealias$i)
- break
- }
-}
-#incr qlvar(ntables) -1
-.ql.c delete tab$tablealias
-.ql.c delete links
-ql_draw_links
-ql_draw_res_panel
-}
-
-proc {ql_dragit} {w x y} {
-global draginfo
-if {"$draginfo(obj)" != ""} {
- set dx [expr $x - $draginfo(x)]
- set dy [expr $y - $draginfo(y)]
- if {$draginfo(is_a_table)} {
- set taglist [.ql.c gettags $draginfo(obj)]
- set tabletag [lindex $taglist [lsearch -regexp $taglist "^tab"]]
- $w move $tabletag $dx $dy
- ql_draw_links
- } else {
- $w move $draginfo(obj) $dx $dy
- }
- set draginfo(x) $x
- set draginfo(y) $y
-}
-}
-
-proc {ql_dragstart} {w x y} {
-global draginfo
-catch {unset draginfo}
-set draginfo(obj) [$w find closest $x $y]
-if {[ql_get_tag_info $draginfo(obj) r]=="ect"} {
- # If it'a a rectangle, exit
- set draginfo(obj) {}
- return
-}
-.ql configure -cursor hand1
-.ql.c raise $draginfo(obj)
-set draginfo(table) 0
-if {[ql_get_tag_info $draginfo(obj) table]=="header"} {
- set draginfo(is_a_table) 1
- .ql.c itemconfigure [.ql.c find withtag hili] -fill black
- .ql.c dtag [.ql.c find withtag hili] hili
- .ql.c addtag hili withtag $draginfo(obj)
- .ql.c itemconfigure hili -fill blue
-} else {
- set draginfo(is_a_table) 0
-}
-set draginfo(x) $x
-set draginfo(y) $y
-set draginfo(sx) $x
-set draginfo(sy) $y
-}
-
-proc {ql_dragstop} {x y} {
-global draginfo qlvar
-# when click Close, ql window is destroyed but event ButtonRelease-1 is fired
-if {![winfo exists .ql]} return;
-.ql configure -cursor left_ptr
-set este {}
-catch {set este $draginfo(obj)}
-if {$este==""} return
-# Re-establish the normal paint order so
-# information won't be overlapped by table rectangles
-# or link linkes
-.ql.c lower $draginfo(obj)
-.ql.c lower rect
-.ql.c lower links
-set qlvar(panstarted) 0
-if {$draginfo(is_a_table)} {
- set draginfo(obj) {}
- .ql.c delete links
- ql_draw_links
- return
-}
-.ql.c move $draginfo(obj) [expr $draginfo(sx)-$x] [expr $draginfo(sy)-$y]
-if {($y>$qlvar(yoffs)) && ($x>$qlvar(xoffs))} {
- # Drop position : inside the result panel
- # Compute the offset of the result panel due to panning
- set resoffset [expr [lindex [.ql.c bbox resmarker] 0]-$qlvar(xoffs)]
- set newfld [.ql.c itemcget $draginfo(obj) -text]
- set tabtag [ql_get_tag_info $draginfo(obj) tab]
- set col [expr int(($x-$qlvar(xoffs)-$resoffset)/$qlvar(reswidth))]
- set qlvar(resfields) [linsert $qlvar(resfields) $col $newfld]
- set qlvar(ressort) [linsert $qlvar(ressort) $col unsorted]
- set qlvar(rescriteria) [linsert $qlvar(rescriteria) $col {}]
- set qlvar(restables) [linsert $qlvar(restables) $col $tabtag]
- set qlvar(resreturn) [linsert $qlvar(resreturn) $col yes]
- ql_draw_res_panel
-} else {
- # Drop position : in the table panel
- set droptarget [.ql.c find overlapping $x $y $x $y]
- set targettable {}
- foreach item $droptarget {
- set targettable [ql_get_tag_info $item tab]
- set targetfield [ql_get_tag_info $item f-]
- if {($targettable!="") && ($targetfield!="")} {
- set droptarget $item
- break
- }
- }
- # check if target object isn't a rectangle
- if {[ql_get_tag_info $droptarget rec]=="t"} {set targettable {}}
- if {$targettable!=""} {
- # Target has a table
- # See about originate table
- set sourcetable [ql_get_tag_info $draginfo(obj) tab]
- if {$sourcetable!=""} {
- # Source has also a tab .. tag
- set sourcefield [ql_get_tag_info $draginfo(obj) f-]
- if {$sourcetable!=$targettable} {
- lappend qlvar(links) [list $sourcetable $sourcefield $targettable $targetfield $draginfo(obj) $droptarget]
- ql_draw_links
- }
- }
- }
-}
-# Erase information about onbject beeing dragged
-set draginfo(obj) {}
-}
-
-proc {ql_draw_links} {} {
-global qlvar
-.ql.c delete links
-set i 0
-foreach link $qlvar(links) {
- # Compute the source and destination right edge
- set sre [lindex [.ql.c bbox tab[lindex $link 0]] 2]
- set dre [lindex [.ql.c bbox tab[lindex $link 2]] 2]
- # Compute field bound boxes
- set sbbox [.ql.c bbox [lindex $link 4]]
- set dbbox [.ql.c bbox [lindex $link 5]]
- # Compute the auxiliary lines
- if {[lindex $sbbox 2] < [lindex $dbbox 0]} {
- # Source object is on the left of target object
- set x1 $sre
- set y1 [expr ([lindex $sbbox 1]+[lindex $sbbox 3])/2]
- .ql.c create line $x1 $y1 [expr $x1+10] $y1 -tags [subst {links lkid$i}] -width 3
- set x2 [lindex $dbbox 0]
- set y2 [expr ([lindex $dbbox 1]+[lindex $dbbox 3])/2]
- .ql.c create line [expr $x2-10] $y2 $x2 $y2 -tags [subst {links lkid$i}] -width 3
- .ql.c create line [expr $x1+10] $y1 [expr $x2-10] $y2 -tags [subst {links lkid$i}] -width 2
- } else {
- # source object is on the right of target object
- set x1 [lindex $sbbox 0]
- set y1 [expr ([lindex $sbbox 1]+[lindex $sbbox 3])/2]
- .ql.c create line $x1 $y1 [expr $x1-10] $y1 -tags [subst {links lkid$i}] -width 3
- set x2 $dre
- set y2 [expr ([lindex $dbbox 1]+[lindex $dbbox 3])/2]
- .ql.c create line $x2 $y2 [expr $x2+10] $y2 -width 3 -tags [subst {links lkid$i}]
- .ql.c create line [expr $x1-10] $y1 [expr $x2+10] $y2 -tags [subst {links lkid$i}] -width 2
- }
- incr i
-}
-.ql.c lower links
-.ql.c bind links <Button-1> {ql_link_click %x %y}
-}
-
-proc {ql_draw_lizzard} {} {
-global qlvar pref
-.ql.c delete all
-set posx 20
-for {set it 0} {$it<$qlvar(ntables)} {incr it} {
- ql_draw_table $it
-}
-.ql.c lower rect
-.ql.c create line 0 $qlvar(yoffs) 10000 $qlvar(yoffs) -width 3
-.ql.c create rectangle 0 $qlvar(yoffs) 10000 5000 -fill #FFFFFF
-for {set i [expr 15+$qlvar(yoffs)]} {$i<500} {incr i 15} {
- .ql.c create line $qlvar(xoffs) $i 10000 $i -fill #CCCCCC -tags {resgrid}
-}
-for {set i $qlvar(xoffs)} {$i<10000} {incr i $qlvar(reswidth)} {
- .ql.c create line $i [expr 1+$qlvar(yoffs)] $i 10000 -fill #cccccc -tags {resgrid}
-}
-# Make a marker for result panel offset calculations (due to panning)
-.ql.c create line $qlvar(xoffs) $qlvar(yoffs) $qlvar(xoffs) 500 -tags {resmarker resgrid}
-.ql.c create rectangle 0 $qlvar(yoffs) $qlvar(xoffs) 5000 -fill #EEEEEE -tags {reshdr}
-.ql.c create text 5 [expr 1+$qlvar(yoffs)] -text Field: -anchor nw -font $pref(font_normal) -tags {reshdr}
-.ql.c create text 5 [expr 16+$qlvar(yoffs)] -text Table: -anchor nw -font $pref(font_normal) -tags {reshdr}
-.ql.c create text 5 [expr 31+$qlvar(yoffs)] -text Sort: -anchor nw -font $pref(font_normal) -tags {reshdr}
-.ql.c create text 5 [expr 46+$qlvar(yoffs)] -text Criteria: -anchor nw -font $pref(font_normal) -tags {reshdr}
-.ql.c create text 5 [expr 61+$qlvar(yoffs)] -text Return: -anchor nw -font $pref(font_normal) -tags {reshdr}
-.ql.c bind mov <Button-1> {ql_dragstart %W %x %y}
-.ql.c bind mov <B1-Motion> {ql_dragit %W %x %y}
-bind .ql <ButtonRelease-1> {ql_dragstop %x %y}
-bind .ql <Button-1> {qlc_click %x %y %W}
-bind .ql <B1-Motion> {ql_pan %x %y}
-bind .ql <Key-Delete> {ql_delete_object}
-}
-
-proc {ql_draw_res_panel} {} {
-global qlvar pref
-# Compute the offset of the result panel due to panning
-set resoffset [expr [lindex [.ql.c bbox resmarker] 0]-$qlvar(xoffs)]
-.ql.c delete resp
-for {set i 0} {$i<[llength $qlvar(resfields)]} {incr i} {
- .ql.c create text [expr $resoffset+4+$qlvar(xoffs)+$i*$qlvar(reswidth)] [expr 1+$qlvar(yoffs)] -text [lindex $qlvar(resfields) $i] -anchor nw -tags [subst {resf resp col$i}] -font $pref(font_normal)
- .ql.c create text [expr $resoffset+4+$qlvar(xoffs)+$i*$qlvar(reswidth)] [expr 16+$qlvar(yoffs)] -text $qlvar(ali_[lindex $qlvar(restables) $i]) -anchor nw -tags {resp rest} -font $pref(font_normal)
- .ql.c create text [expr $resoffset+4+$qlvar(xoffs)+$i*$qlvar(reswidth)] [expr 31+$qlvar(yoffs)] -text [lindex $qlvar(ressort) $i] -anchor nw -tags {resp sort} -font $pref(font_normal)
- if {[lindex $qlvar(rescriteria) $i]!=""} {
- .ql.c create text [expr $resoffset+4+$qlvar(xoffs)+$i*$qlvar(reswidth)] [expr $qlvar(yoffs)+46+15*0] -anchor nw -text [lindex $qlvar(rescriteria) $i] -font $pref(font_normal) -tags [subst {resp cr-c$i-r0}]
- }
- .ql.c create text [expr $resoffset+4+$qlvar(xoffs)+$i*$qlvar(reswidth)] [expr 61+$qlvar(yoffs)] -text [lindex $qlvar(resreturn) $i] -anchor nw -tags {resp retval} -font $pref(font_normal)
-}
-.ql.c raise reshdr
-.ql.c bind resf <Button-1> {ql_resfield_click %x %y}
-.ql.c bind sort <Button-1> {ql_swap_sort %W %x %y}
-.ql.c bind retval <Button-1> {ql_toggle_return %W %x %y}
-}
-
-proc {ql_draw_table} {it} {
-global qlvar pref
-
-set posy 10
-set allbox [.ql.c bbox rect]
-if {$allbox==""} {set posx 10} else {set posx [expr 20+[lindex $allbox 2]]}
-set tablename $qlvar(tablename$it)
-set tablealias $qlvar(tablealias$it)
-.ql.c create text $posx $posy -text "$tablename" -anchor nw -tags [subst {tab$tablealias f-oid mov tableheader}] -font $pref(font_bold)
-incr posy 16
-foreach fld $qlvar(tablestruct$it) {
- .ql.c create text $posx $posy -text $fld -fill #010101 -anchor nw -tags [subst {f-$fld tab$tablealias mov}] -font $pref(font_normal)
- incr posy 14
-}
-set reg [.ql.c bbox tab$tablealias]
-.ql.c create rectangle [lindex $reg 0] [lindex $reg 1] [lindex $reg 2] [lindex $reg 3] -fill #EEEEEE -tags [subst {rect tab$tablealias}]
-.ql.c create line [lindex $reg 0] [expr [lindex $reg 1]+15] [lindex $reg 2] [expr [lindex $reg 1]+15] -tags [subst {rect tab$tablealias}]
-.ql.c lower tab$tablealias
-.ql.c lower rect
-}
-
-proc {ql_get_tag_info} {obj prefix} {
-set taglist [.ql.c gettags $obj]
-set tagpos [lsearch -regexp $taglist "^$prefix"]
-if {$tagpos==-1} {return ""}
-set thattag [lindex $taglist $tagpos]
-return [string range $thattag [string length $prefix] end]
-}
-
-proc {ql_init} {} {
-global qlvar
-catch {unset qlvar}
-set qlvar(yoffs) 360
-set qlvar(xoffs) 50
-set qlvar(reswidth) 150
-set qlvar(resfields) {}
-set qlvar(resreturn) {}
-set qlvar(ressort) {}
-set qlvar(rescriteria) {}
-set qlvar(restables) {}
-set qlvar(critedit) 0
-set qlvar(links) {}
-set qlvar(ntables) 0
-set qlvar(newtablename) {}
-}
-
-proc {ql_link_click} {x y} {
-global qlvar
-
-set obj [.ql.c find closest $x $y 1 links]
-if {[ql_get_tag_info $obj link]!="s"} return
-.ql.c itemconfigure [.ql.c find withtag hili] -fill black
-.ql.c dtag [.ql.c find withtag hili] hili
-.ql.c addtag hili withtag $obj
-.ql.c itemconfigure $obj -fill blue
-}
-
-proc {ql_pan} {x y} {
-global qlvar
-set panstarted 0
-catch {set panstarted $qlvar(panstarted) }
-if {!$panstarted} return
-set dx [expr $x-$qlvar(panstartx)]
-set dy [expr $y-$qlvar(panstarty)]
-set qlvar(panstartx) $x
-set qlvar(panstarty) $y
-if {$qlvar(panobject)=="tables"} {
- .ql.c move mov $dx $dy
- .ql.c move links $dx $dy
- .ql.c move rect $dx $dy
-} else {
- .ql.c move resp $dx 0
- .ql.c move resgrid $dx 0
- .ql.c raise reshdr
-}
-}
-
-proc {ql_resfield_click} {x y} {
-global qlvar
-
-set obj [.ql.c find closest $x $y]
-if {[ql_get_tag_info $obj res]!="f"} return
-.ql.c itemconfigure [.ql.c find withtag hili] -fill black
-.ql.c dtag [.ql.c find withtag hili] hili
-.ql.c addtag hili withtag $obj
-.ql.c itemconfigure $obj -fill blue
-}
-
-proc {ql_show_sql} {} {
-global qlvar pref
-
-set sqlcmd [ql_compute_sql]
-.ql.c delete sqlpage
-.ql.c create rectangle 0 0 2000 [expr $qlvar(yoffs)-1] -fill #ffffff -tags {sqlpage}
-.ql.c create text 10 10 -text $sqlcmd -anchor nw -width 550 -tags {sqlpage} -font $pref(font_normal)
-.ql.c bind sqlpage <Button-1> {.ql.c delete sqlpage}
-}
-
-proc {ql_swap_sort} {w x y} {
-global qlvar
-set obj [$w find closest $x $y]
-set taglist [.ql.c gettags $obj]
-if {[lsearch $taglist sort]==-1} return
-set cum [.ql.c itemcget $obj -text]
-if {$cum=="unsorted"} {
- set cum Ascending
-} elseif {$cum=="Ascending"} {
- set cum Descending
-} else {
- set cum unsorted
-}
-set col [expr int(($x-$qlvar(xoffs))/$qlvar(reswidth))]
-set qlvar(ressort) [lreplace $qlvar(ressort) $col $col $cum]
-.ql.c itemconfigure $obj -text $cum
-}
-
-#rjr 8Mar1999 toggle logical return state for result
-proc {ql_toggle_return} {w x y} {
-global qlvar
-set obj [$w find closest $x $y]
-set taglist [.ql.c gettags $obj]
-if {[lsearch $taglist retval]==-1} return
-set cum [.ql.c itemcget $obj -text]
-if {$cum} {
- set cum no
-} else {
- set cum yes
-}
-set col [expr int(($x-$qlvar(xoffs))/$qlvar(reswidth))]
-set qlvar(resreturn) [lreplace $qlvar(resreturn) $col $col $cum]
-.ql.c itemconfigure $obj -text $cum
-}
-
-proc {qlc_click} {x y w} {
-global qlvar pref
-set qlvar(panstarted) 0
-if {$w==".ql.c"} {
- set canpan 1
- if {$y<$qlvar(yoffs)} {
- if {[llength [.ql.c find overlapping $x $y $x $y]]!=0} {set canpan 0}
- set qlvar(panobject) tables
- } else {
- set qlvar(panobject) result
- }
- if {$canpan} {
- .ql configure -cursor hand1
- set qlvar(panstartx) $x
- set qlvar(panstarty) $y
- set qlvar(panstarted) 1
- }
-}
-set isedit 0
-catch {set isedit $qlvar(critedit)}
-# Compute the offset of the result panel due to panning
-set resoffset [expr [lindex [.ql.c bbox resmarker] 0]-$qlvar(xoffs)]
-if {$isedit} {
- set qlvar(rescriteria) [lreplace $qlvar(rescriteria) $qlvar(critcol) $qlvar(critcol) $qlvar(critval)]
- .ql.c delete cr-c$qlvar(critcol)-r$qlvar(critrow)
- .ql.c create text [expr $resoffset+4+$qlvar(xoffs)+$qlvar(critcol)*$qlvar(reswidth)] [expr $qlvar(yoffs)+46+15*$qlvar(critrow)] -anchor nw -text $qlvar(critval) -font $pref(font_normal) -tags [subst {resp cr-c$qlvar(critcol)-r$qlvar(critrow)}]
- set qlvar(critedit) 0
-}
-catch {destroy .ql.entc}
-if {$y<[expr $qlvar(yoffs)+46]} return
-if {$x<[expr $qlvar(xoffs)+5]} return
-set col [expr int(($x-$qlvar(xoffs)-$resoffset)/$qlvar(reswidth))]
-if {$col>=[llength $qlvar(resfields)]} return
-set nx [expr $col*$qlvar(reswidth)+8+$qlvar(xoffs)+$resoffset]
-set ny [expr $qlvar(yoffs)+76]
-# Get the old criteria value
-set qlvar(critval) [lindex $qlvar(rescriteria) $col]
-entry .ql.entc -textvar qlvar(critval) -borderwidth 0 -background #FFFFFF -highlightthickness 0 -selectborderwidth 0 -font $pref(font_normal)
-place .ql.entc -x $nx -y $ny -height 14
-focus .ql.entc
-bind .ql.entc <Button-1> {set qlvar(panstarted) 0}
-set qlvar(critcol) $col
-set qlvar(critrow) 0
-set qlvar(critedit) 1
-}
-
-proc {rb_add_field} {} {
-global rbvar pref
-set fldname [.rb.lb get [.rb.lb curselection]]
-set newid [.rb.c create text $rbvar(xf_auto) [expr $rbvar(y_rpthdr)+5] -text $fldname -tags [subst {t_l mov ro}] -anchor nw -font $pref(font_normal)]
-.rb.c create text $rbvar(xf_auto) [expr $rbvar(y_pghdr)+5] -text $fldname -tags [subst {f-$fldname t_f rg_detail mov ro}] -anchor nw -font $pref(font_normal)
-set bb [.rb.c bbox $newid]
-incr rbvar(xf_auto) [expr 5+[lindex $bb 2]-[lindex $bb 0]]
-}
-
-proc {rb_add_label} {} {
-global rbvar pref
-set fldname $rbvar(labeltext)
-set newid [.rb.c create text $rbvar(xl_auto) [expr $rbvar(y_rpthdr)+5] -text $fldname -tags [subst {t_l mov ro}] -anchor nw -font $pref(font_normal)]
-set bb [.rb.c bbox $newid]
-incr rbvar(xl_auto) [expr 5+[lindex $bb 2]-[lindex $bb 0]]
-}
-
-proc {rb_change_object_font} {} {
-global rbvar
-.rb.c itemconfigure hili -font -Adobe-[.rb.bfont cget -text]-[rb_get_bold]-[rb_get_italic]-Normal--*-$rbvar(pointsize)-*-*-*-*-*-*
-}
-
-proc {rb_delete_object} {} {
-if {[tk_messageBox -title Warning -parent .rb -message "Delete current report object?" -type yesno -default no]=="no"} return;
-.rb.c delete hili
-}
-
-proc {rb_dragit} {w x y} {
-global draginfo rbvar
-# Showing current region
-foreach rg $rbvar(regions) {
- set rbvar(msg) $rbvar(e_$rg)
- if {$rbvar(y_$rg)>$y} break;
-}
-set temp {}
-catch {set temp $draginfo(obj)}
-if {"$temp" != ""} {
- set dx [expr $x - $draginfo(x)]
- set dy [expr $y - $draginfo(y)]
- if {$draginfo(region)!=""} {
- set x $draginfo(x) ; $w move bg_$draginfo(region) 0 $dy
- } else {
- $w move $draginfo(obj) $dx $dy
- }
- set draginfo(x) $x
- set draginfo(y) $y
-}
-}
-
-proc {rb_dragstart} {w x y} {
-global draginfo rbvar
-focus .rb.c
-catch {unset draginfo}
-set obj {}
-# Only movable objects start dragging
-foreach id [$w find overlapping $x $y $x $y] {
- if {[rb_has_tag $id mov]} {
- set obj $id
- break
- }
-}
-if {$obj==""} return;
-set draginfo(obj) $obj
-set taglist [.rb.c itemcget $obj -tags]
-set i [lsearch -glob $taglist bg_*]
-if {$i==-1} {
- set draginfo(region) {}
-} else {
- set draginfo(region) [string range [lindex $taglist $i] 3 64]
-}
-.rb configure -cursor hand1
-.rb.c itemconfigure [.rb.c find withtag hili] -fill black
-.rb.c dtag [.rb.c find withtag hili] hili
-.rb.c addtag hili withtag $draginfo(obj)
-.rb.c itemconfigure hili -fill blue
-set draginfo(x) $x
-set draginfo(y) $y
-set draginfo(sx) $x
-set draginfo(sy) $y
-# Setting font information
-if {[.rb.c type hili]=="text"} {
- set fnta [split [.rb.c itemcget hili -font] -]
- .rb.bfont configure -text [lindex $fnta 2]
- if {[lindex $fnta 3]=="Medium"} then {.rb.lbold configure -relief raised} else {.rb.lbold configure -relief sunken}
- if {[lindex $fnta 4]=="R"} then {.rb.lita configure -relief raised} else {.rb.lita configure -relief sunken}
- set rbvar(pointsize) [lindex $fnta 8]
- if {[rb_has_tag $obj t_f]} {set rbvar(info) "Database field"}
- if {[rb_has_tag $obj t_l]} {set rbvar(info) "Label"}
- if {[.rb.c itemcget $obj -anchor]=="nw"} then {.rb.balign configure -text left} else {.rb.balign configure -text right}
-}
-}
-
-proc {rb_dragstop} {x y} {
-global draginfo rbvar
-# when click Close, ql window is destroyed but event ButtonRelease-1 is fired
-if {![winfo exists .rb]} return;
-.rb configure -cursor left_ptr
-set este {}
-catch {set este $draginfo(obj)}
-if {$este==""} return
-# Erase information about object beeing dragged
-if {$draginfo(region)!=""} {
- set dy 0
- foreach rg $rbvar(regions) {
- .rb.c move rg_$rg 0 $dy
- if {$rg==$draginfo(region)} {
- set dy [expr $y-$rbvar(y_$draginfo(region))]
- }
- incr rbvar(y_$rg) $dy
- }
-# .rb.c move det 0 [expr $y-$rbvar(y_$draginfo(region))]
- set rbvar(y_$draginfo(region)) $y
- rb_draw_regions
-} else {
- # Check if object beeing dragged is inside the canvas
- set bb [.rb.c bbox $draginfo(obj)]
- if {[lindex $bb 0] < 5} {
- .rb.c move $draginfo(obj) [expr 5-[lindex $bb 0]] 0
- }
-}
-set draginfo(obj) {}
-unset draginfo
-}
-
-proc {rb_draw_regions} {} {
-global rbvar
-foreach rg $rbvar(regions) {
- .rb.c delete bg_$rg
- .rb.c create line 0 $rbvar(y_$rg) 5000 $rbvar(y_$rg) -tags [subst {bg_$rg}]
- .rb.c create rectangle 6 [expr $rbvar(y_$rg)-3] 12 [expr $rbvar(y_$rg)+3] -fill black -tags [subst {bg_$rg mov reg}]
- .rb.c lower bg_$rg
-}
-}
-
-proc {rb_flip_align} {} {
-set bb [.rb.c bbox hili]
-if {[.rb.balign cget -text]=="left"} then {
- .rb.balign configure -text right
- .rb.c itemconfigure hili -anchor ne
- .rb.c move hili [expr [lindex $bb 2]-[lindex $bb 0]-3] 0
-} else {
- .rb.balign configure -text left
- .rb.c itemconfigure hili -anchor nw
- .rb.c move hili [expr [lindex $bb 0]-[lindex $bb 2]+3] 0
-}
-}
-
-proc {rb_get_bold} {} {
-if {[.rb.lbold cget -relief]=="raised"} then {return Medium} else {return Bold}
-}
-
-proc {rb_get_italic} {} {
-if {[.rb.lita cget -relief]=="raised"} then {return R} else {return O}
-}
-
-proc {rb_get_report_fields} {} {
-global dbc rbvar
-.rb.lb delete 0 end
-if {$rbvar(tablename)==""} return ;
-#cursor_clock
-wpg_select $dbc "select attnum,attname from pg_class,pg_attribute where (pg_class.relname='$rbvar(tablename)') and (pg_class.oid=pg_attribute.attrelid) and (attnum>0) order by attnum" rec {
- .rb.lb insert end $rec(attname)
-}
-#cursor_normal
-}
-
-proc {rb_has_tag} {id tg} {
-if {[lsearch [.rb.c itemcget $id -tags] $tg]==-1} then {return 0 } else {return 1}
-}
-
-proc {rb_init} {} {
-global rbvar
-set rbvar(xl_auto) 10
-set rbvar(xf_auto) 10
-set rbvar(regions) {rpthdr pghdr detail pgfoo rptfoo}
-set rbvar(y_rpthdr) 30
-set rbvar(y_pghdr) 60
-set rbvar(y_detail) 90
-set rbvar(y_pgfoo) 120
-set rbvar(y_rptfoo) 150
-set rbvar(e_rpthdr) {Report header}
-set rbvar(e_pghdr) {Page header}
-set rbvar(e_detail) {Detail record}
-set rbvar(e_pgfoo) {Page footer}
-set rbvar(e_rptfoo) {Report footer}
-rb_draw_regions
-}
-
-proc {rb_load_report} {} {
-global rbvar dbc
-.rb.c delete all
-wpg_select $dbc "select * from pga_reports where reportname='$rbvar(reportname)'" rcd {
- eval $rcd(reportbody)
-}
-rb_get_report_fields
-rb_draw_regions
-}
-
-proc {rb_preview} {} {
-global dbc rbvar
-Window show .rpv
-.rpv.fr.c delete all
-set ol [.rb.c find withtag ro]
-set fields {}
-foreach objid $ol {
- set tags [.rb.c itemcget $objid -tags]
- lappend fields [string range [lindex $tags [lsearch -glob $tags f-*]] 2 64]
- lappend fields [lindex [.rb.c coords $objid] 0]
- lappend fields [lindex [.rb.c coords $objid] 1]
- lappend fields $objid
- lappend fields [lindex $tags [lsearch -glob $tags t_*]]
-}
-# Parsing page header
-set py 10
-foreach {field x y objid objtype} $fields {
- if {$objtype=="t_l"} {
- .rpv.fr.c create text $x [expr $py+$y] -text [.rb.c itemcget $objid -text] -font [.rb.c itemcget $objid -font] -anchor nw
- }
-}
-incr py [expr $rbvar(y_pghdr)-$rbvar(y_rpthdr)]
-# Parsing detail group
-set di [lsearch $rbvar(regions) detail]
-set y_hi $rbvar(y_detail)
-set y_lo $rbvar(y_[lindex $rbvar(regions) [expr $di-1]])
-wpg_select $dbc "select * from \"$rbvar(tablename)\"" rec {
- foreach {field x y objid objtype} $fields {
- if {($y>=$y_lo) && ($y<=$y_hi)} then {
- if {$objtype=="t_f"} {
- .rpv.fr.c create text $x [expr $py+$y] -text $rec($field) -font [.rb.c itemcget $objid -font] -anchor [.rb.c itemcget $objid -anchor]
- }
- if {$objtype=="t_l"} {
- .rpv.fr.c create text $x [expr $py+$y] -text [.rb.c itemcget $objid -text] -font [.rb.c itemcget $objid -font] -anchor nw
- }
- }
- }
- incr py [expr $rbvar(y_detail)-$rbvar(y_pghdr)]
-}
-.rpv.fr.c configure -scrollregion [subst {0 0 1000 $py}]
-}
-
-proc {rb_print_report} {} {
-set bb [.rpv.fr.c bbox all]
-.rpv.fr.c postscript -file "pgaccess-report.ps" -width [expr 10+[lindex $bb 2]-[lindex $bb 0]] -height [expr 10+[lindex $bb 3]-[lindex $bb 1]]
-tk_messageBox -title Information -parent .rb -message "The printed image in Postscript is in the file pgaccess-report.ps"
-}
-
-proc {rb_save_report} {} {
-global rbvar
-set prog "set rbvar(tablename) \"$rbvar(tablename)\""
-foreach region $rbvar(regions) {
- set prog "$prog ; set rbvar(y_$region) $rbvar(y_$region)"
-}
-foreach obj [.rb.c find all] {
- if {[.rb.c type $obj]=="text"} {
- set bb [.rb.c bbox $obj]
- if {[.rb.c itemcget $obj -anchor]=="nw"} then {set x [expr [lindex $bb 0]+1]} else {set x [expr [lindex $bb 2]-2]}
- set prog "$prog ; .rb.c create text $x [lindex $bb 1] -font [.rb.c itemcget $obj -font] -anchor [.rb.c itemcget $obj -anchor] -text {[.rb.c itemcget $obj -text]} -tags {[.rb.c itemcget $obj -tags]}"
- }
-}
-sql_exec noquiet "delete from pga_reports where reportname='$rbvar(reportname)'"
-sql_exec noquiet "insert into pga_reports (reportname,reportsource,reportbody) values ('$rbvar(reportname)','$rbvar(tablename)','$prog')"
-}
-
-proc {save_pref} {} {
-global pref
-catch {
- set fid [open "~/.pgaccessrc" w]
- foreach {opt val} [array get pref] { puts $fid "$opt {$val}" }
- close $fid
-}
-}
-
-proc {show_error} {emsg} {
- bell ; tk_messageBox -title Error -icon error -message $emsg
-}
-
-proc {show_table_information} {tblname} {
-global dbc tiw activetab indexlist
-set tiw(tablename) $tblname
-if {$tiw(tablename)==""} return;
-Window show .tiw
-.tiw.lb delete 0 end
-.tiw.ilb delete 0 end
-set tiw(isunique) {}
-set tiw(isclustered) {}
-set tiw(indexfields) {}
-wpg_select $dbc "select attnum,attname,typname,attlen,atttypmod,usename,pg_class.oid 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) order by attnum" rec {
- set fsize $rec(attlen)
- set fsize1 $rec(atttypmod)
- set ftype $rec(typname)
- if { $fsize=="-1" && $fsize1!="-1" } {
- set fsize $rec(atttypmod)
- incr fsize -4
- }
- if { $fsize1=="-1" && $fsize=="-1" } {
- set fsize ""
- }
- if {$rec(attnum)>0} {.tiw.lb insert end [format "%-33s %-14s %-4s" $rec(attname) $ftype $fsize]}
- set tiw(owner) $rec(usename)
- set tiw(tableoid) $rec(oid)
- set tiw(f$rec(attnum)) $rec(attname)
-}
-set tiw(indexlist) {}
-wpg_select $dbc "select oid,indexrelid from pg_index where (pg_class.relname='$tiw(tablename)') and (pg_class.oid=pg_index.indrelid)" rec {
- lappend tiw(indexlist) $rec(oid)
- wpg_select $dbc "select relname from pg_class where oid=$rec(indexrelid)" rec1 {
- .tiw.ilb insert end $rec1(relname)
- }
-}
-}
-
-proc {sql_exec} {how cmd} {
-global dbc pgsql
-if {[set pgr [wpg_exec $dbc $cmd]]==0} {
- return 0
-}
-if {($pgsql(status)=="PGRES_COMMAND_OK") || ($pgsql(status)=="PGRES_TUPLES_OK")} {
- pg_result $pgr -clear
- return 1
-}
-if {$how != "quiet"} {
- show_error "Error executing query\n\n$cmd\n\nPostgreSQL error message:\n$pgsql(errmsg)\nPostgreSQL status:$pgsql(status)"
-}
-pg_result $pgr -clear
-return 0
-}
-
-proc {tab_click} {w} {
-global dbc tablist activetab pref
-if {$dbc==""} return;
-set curtab [$w cget -text]
-#if {$activetab==$curtab} return;
-.dw.btndesign configure -state disabled
-if {$activetab!=""} {
- place .dw.tab$activetab -x 10
- .dw.tab$activetab configure -font $pref(font_normal)
-}
-$w configure -font $pref(font_bold)
-place $w -x 7
-place .dw.lmask -x 80 -y [expr 86+25*[lsearch -exact $tablist $curtab]]
-set activetab $curtab
-# Tabs where button Design is enabled
-if {[lsearch {Scripts Queries Views Reports Forms Users} $activetab]!=-1} {
- .dw.btndesign configure -state normal
-}
-.dw.lb delete 0 end
-cmd_$curtab
-}
-
-proc {tiw_show_index} {} {
-global tiw dbc
-set cs [.tiw.ilb curselection]
-if {$cs==""} return
-set idxname [.tiw.ilb get $cs]
-wpg_select $dbc "select pg_index.*,pg_class.oid from pg_index,pg_class where pg_class.relname='$idxname' and pg_class.oid=pg_index.indexrelid" rec {
- if {$rec(indisunique)=="t"} {
- set tiw(isunique) Yes
- } else {
- set tiw(isunique) No
- }
- if {$rec(indisclustered)=="t"} {
- set tiw(isclustered) Yes
- } else {
- set tiw(isclustered) No
- }
- set tiw(indexfields) {}
- foreach field $rec(indkey) {
- if {$field!=0} {
-# wpg_select $dbc "select attname from pg_attribute where attrelid=$tiw(tableoid) and attnum=$field" rec1 {
-# set tiw(indexfields) "$tiw(indexfields) $rec1(attname)"
-# }
- set tiw(indexfields) "$tiw(indexfields) $tiw(f$field)"
- }
-
- }
-}
-set tiw(indexfields) [string trim $tiw(indexfields)]
-}
-
-proc {vacuum} {} {
-global dbc dbname sdbname pgsql
-if {$dbc==""} return;
-set sdbname "vacuuming database $dbname ..."
-cursor_clock
-set pgres [wpg_exec $dbc "vacuum;"]
-catch {pg_result $pgres -clear}
-cursor_normal
-set sdbname $dbname
-}
-
-proc {main} {argc argv} {
-global pref newdbname newpport newhost newusername newpassword dbc tcl_platform
-if {[string toupper $tcl_platform(platform)]=="WINDOWS"} {
- load libpgtcl.dll
-} else {
- load libpgtcl.so
-}
-catch {draw_tabs}
-set newusername {}
-set newpassword {}
-if {$argc>0} {
- set newdbname [lindex $argv 0]
- set newhost localhost
- set newpport 5432
- open_database
-} elseif {$pref(autoload) && ($pref(lastdb)!="")} {
- set newdbname $pref(lastdb)
- set newhost $pref(lasthost)
- set newpport $pref(lastport)
- catch {set newusername $pref(lastusername)}
- if {[set openmsg [open_database]]!=""} {
- if {[regexp "no password supplied" $openmsg]} {
- Window show .dbod
- focus .dbod.epassword
- wm transient .dbod .dw
- }
- }
-
-}
-wm protocol .dw WM_DELETE_WINDOW {
- catch {pg_disconnect $dbc}
- exit }
-}
-
-proc {Window} {args} {
-global vTcl
- set cmd [lindex $args 0]
- set name [lindex $args 1]
- set newname [lindex $args 2]
- set rest [lrange $args 3 end]
- if {$name == "" || $cmd == ""} {return}
- if {$newname == ""} {
- set newname $name
- }
- set exists [winfo exists $newname]
- switch $cmd {
- show {
- if {$exists == "1" && $name != "."} {wm deiconify $name; return}
- if {[info procs vTclWindow(pre)$name] != ""} {
- eval "vTclWindow(pre)$name $newname $rest"
- }
- if {[info procs vTclWindow$name] != ""} {
- eval "vTclWindow$name $newname $rest"
- }
- if {[info procs vTclWindow(post)$name] != ""} {
- eval "vTclWindow(post)$name $newname $rest"
- }
- }
- hide { if $exists {wm withdraw $newname; return} }
- iconify { if $exists {wm iconify $newname; return} }
- destroy { if $exists {destroy $newname; return} }
- }
-}
-
-proc vTclWindow. {base} {
- if {$base == ""} {
- set base .
- }
- wm focusmodel $base passive
- wm geometry $base 1x1+0+0
- wm maxsize $base 1009 738
- wm minsize $base 1 1
- wm overrideredirect $base 0
- wm resizable $base 1 1
- wm withdraw $base
- wm title $base "vt.tcl"
-}
-
-proc vTclWindow.about {base} {
- if {$base == ""} {
- set base .about
- }
- if {[winfo exists $base]} {
- wm deiconify $base; return
- }
- toplevel $base -class Toplevel
- wm focusmodel $base passive
- wm geometry $base 471x177+168+243
- wm maxsize $base 1009 738
- wm minsize $base 1 1
- wm overrideredirect $base 0
- wm resizable $base 1 1
- wm title $base "About"
- label $base.l1 -borderwidth 3 -font -Adobe-Helvetica-Bold-R-Normal-*-*-180-*-*-*-*-* -relief ridge -text PgAccess
- label $base.l2 -relief groove -text {A Tcl/Tk interface to
-PostgreSQL
-by Constantin Teodorescu}
- label $base.l3 -borderwidth 0 -relief sunken -text {v 0.96}
- label $base.l4 -relief groove -text {You will always get the latest version at:
-http://www.flex.ro/pgaccess
-
-Suggestions : teo@flex.ro}
- button $base.b1 -borderwidth 1 -command {Window destroy .about} -text Ok
- place $base.l1 -x 10 -y 10 -width 196 -height 103 -anchor nw -bordermode ignore
- place $base.l2 -x 10 -y 115 -width 198 -height 55 -anchor nw -bordermode ignore
- place $base.l3 -x 145 -y 80 -anchor nw -bordermode ignore
- place $base.l4 -x 215 -y 10 -width 246 -height 103 -anchor nw -bordermode ignore
- place $base.b1 -x 295 -y 130 -width 105 -height 28 -anchor nw -bordermode ignore
-}
-
-proc vTclWindow.dbod {base} {
- if {$base == ""} {
- set base .dbod
- }
- if {[winfo exists $base]} {
- wm deiconify $base; return
- }
- toplevel $base -class Toplevel \
- -cursor left_ptr
- wm focusmodel $base passive
- wm geometry $base 282x180+358+333
- 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 "Open database"
- label $base.lhost \
- -borderwidth 0 -text Host
- entry $base.ehost \
- -background #fefefe -borderwidth 1 -highlightthickness 1 \
- -selectborderwidth 0 -textvariable newhost
- bind $base.ehost <Key-Return> {
- focus .dbod.epport
- }
- label $base.lport \
- -borderwidth 0 -text Port
- entry $base.epport \
- -background #fefefe -borderwidth 1 -highlightthickness 1 \
- -selectborderwidth 0 -textvariable newpport
- bind $base.epport <Key-Return> {
- focus .dbod.edbname
- }
- label $base.ldbname \
- -borderwidth 0 -text Database
- entry $base.edbname \
- -background #fefefe -borderwidth 1 -highlightthickness 1 \
- -selectborderwidth 0 -textvariable newdbname
- bind $base.edbname <Key-Return> {
- focus .dbod.eusername
- .dbod.eusername selection range 0 end
- }
- label $base.lusername \
- -borderwidth 0 -text Username
- entry $base.eusername \
- -background #fefefe -borderwidth 1 -highlightthickness 1 \
- -selectborderwidth 0 -textvariable newusername
- bind $base.eusername <Key-Return> {
- focus .dbod.epassword
- }
- label $base.lpassword \
- -borderwidth 0 -text Password
- entry $base.epassword \
- -background #fefefe -borderwidth 1 -highlightthickness 1 \
- -selectborderwidth 0 -textvariable newpassword -show "*"
- bind $base.epassword <Key-Return> {
- focus .dbod.opbtu
- }
- button $base.opbtu \
- -borderwidth 1 -command open_database -text Open
- bind $base.opbtu <Key-Return> {
- open_database
- }
- button $base.canbut \
- -borderwidth 1 -command {Window hide .dbod} -text Cancel
- 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.lusername \
- -x 35 -y 82 -anchor nw -bordermode ignore
- place $base.eusername \
- -x 100 -y 80 -anchor nw -bordermode ignore
- place $base.lpassword \
- -x 35 -y 107 -anchor nw -bordermode ignore
- place $base.epassword \
- -x 100 -y 105 -anchor nw -bordermode ignore
- place $base.opbtu \
- -x 70 -y 140 -width 60 -height 26 -anchor nw -bordermode ignore
- place $base.canbut \
- -x 150 -y 140 -width 60 -height 26 -anchor nw -bordermode ignore
-}
-
-proc vTclWindow.dw {base} {
-global pref
- if {$base == ""} {
- set base .dw
- }
- if {[winfo exists $base]} {
- wm deiconify $base; return
- }
- toplevel $base -class Toplevel \
- -background #efefef -cursor left_ptr
- wm focusmodel $base passive
- wm geometry $base 322x355+96+172
- 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 "PostgreSQL access"
- label $base.labframe \
- -relief raised
- listbox $base.lb \
- -background #fefefe \
- -selectbackground #c3c3c3 \
- -foreground black -highlightthickness 0 -selectborderwidth 0 \
- -yscrollcommand {.dw.sb set}
- bind $base.lb <Double-Button-1> {
- cmd_Open
- }
- button $base.btnnew \
- -borderwidth 1 -command cmd_New -text New
- button $base.btnopen \
- -borderwidth 1 -command cmd_Open -text Open
- button $base.btndesign \
- -borderwidth 1 -command cmd_Design -text Design
- label $base.lmask \
- -borderwidth 0 \
- -text { }
- label $base.label22 \
- -borderwidth 1 \
- -relief raised
- menubutton $base.menubutton23 \
- -borderwidth 1 -font $pref(font_normal) \
- -menu .dw.menubutton23.01 -padx 4 -pady 3 -text Database
- menu $base.menubutton23.01 \
- -borderwidth 1 -font $pref(font_normal) \
- -tearoff 0
- $base.menubutton23.01 add command \
- \
- -command {
-Window show .dbod
-set newhost $host
-set newpport $pport
-focus .dbod.edbname
-.dbod.edbname selection range 0 end} \
- -label Open -font $pref(font_normal)
- $base.menubutton23.01 add command \
- \
- -command {.dw.lb delete 0 end
-set dbc {}
-set dbname {}
-set sdbname {}} \
- -label Close
- $base.menubutton23.01 add command \
- -command vacuum -label Vacuum
- $base.menubutton23.01 add separator
- $base.menubutton23.01 add command \
- -command {cmd_Import_Export Import} -label {Import table}
- $base.menubutton23.01 add command \
- -command {cmd_Import_Export Export} -label {Export table}
- $base.menubutton23.01 add separator
- $base.menubutton23.01 add command \
- -command cmd_Preferences -label Preferences
- $base.menubutton23.01 add command \
- -command "Window show .sqlw" -label "SQL window"
- $base.menubutton23.01 add separator
- $base.menubutton23.01 add command \
- -command {catch {pg_disconnect $dbc}
-save_pref
-exit} -label Exit
- label $base.lshost \
- -relief groove -text localhost -textvariable host
- label $base.lsdbname \
- -anchor w \
- -relief groove -textvariable sdbname
- scrollbar $base.sb \
- -borderwidth 1 -command {.dw.lb yview} -orient vert
- menubutton $base.mnob \
- -borderwidth 1 \
- -menu .dw.mnob.m -font $pref(font_normal) -text Object
- menu $base.mnob.m \
- -borderwidth 1 -font $pref(font_normal) \
- -tearoff 0
- $base.mnob.m add command \
- -command cmd_New -font $pref(font_normal) -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 \
- -menu .dw.mhelp.m -font $pref(font_normal) -text Help
- menu $base.mhelp.m \
- -borderwidth 1 -font $pref(font_normal) \
- -tearoff 0
- $base.mhelp.m add command \
- -label Contents
- $base.mhelp.m add command \
- -label PostgreSQL
- $base.mhelp.m add separator
- $base.mhelp.m add command \
- -command {Window show .about} -label About
- place $base.labframe \
- -x 80 -y 30 -width 236 -height 300 -anchor nw -bordermode ignore
- place $base.lb \
- -x 90 -y 75 -width 205 -height 243 -anchor nw -bordermode ignore
- place $base.btnnew \
- -x 90 -y 40 -width 60 -height 25 -anchor nw -bordermode ignore
- place $base.btnopen \
- -x 165 -y 40 -width 60 -height 25 -anchor nw -bordermode ignore
- place $base.btndesign \
- -x 235 -y 40 -width 60 -height 25 -anchor nw -bordermode ignore
- place $base.lmask \
- -x 155 -y 45 -width 10 -height 23 -anchor nw -bordermode ignore
- place $base.label22 \
- -x 0 -y 0 -width 396 -height 23 -anchor nw -bordermode ignore
- place $base.menubutton23 \
- -x 0 -y 3 -width 63 -height 17 -anchor nw -bordermode ignore
- place $base.lshost \
- -x 3 -y 335 -width 91 -height 20 -anchor nw -bordermode ignore
- place $base.lsdbname \
- -x 95 -y 335 -width 223 -height 20 -anchor nw -bordermode ignore
- place $base.sb \
- -x 295 -y 74 -width 18 -height 245 -anchor nw -bordermode ignore
- place $base.mnob \
- -x 70 -y 2 -width 44 -height 19 -anchor nw -bordermode ignore
- place $base.mhelp \
- -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
- }
- toplevel $base -class Toplevel
- wm focusmodel $base passive
- wm geometry $base 306x288+233+130
- wm maxsize $base 1009 738
- wm minsize $base 1 1
- wm overrideredirect $base 0
- wm resizable $base 0 0
- wm title $base "Function"
- label $base.l1 -borderwidth 0 -text Name
- entry $base.e1 -background #fefefe -borderwidth 1 -highlightthickness 1 -selectborderwidth 0 -textvariable funcname
- label $base.l2 -borderwidth 0 -text Parameters
- entry $base.e2 -background #fefefe -borderwidth 1 -highlightthickness 1 -selectborderwidth 0 -textvariable funcpar
- label $base.l3 -borderwidth 0 -text Returns
- entry $base.e3 -background #fefefe -borderwidth 1 -highlightthickness 1 -selectborderwidth 0 -textvariable funcret
- text $base.text1 -background #fefefe -borderwidth 1 -highlightthickness 1 -selectborderwidth 0 -wrap word
- button $base.okbtn -borderwidth 1 -command {
- 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 destroy .fw
- tk_messageBox -title PostgreSQL -message "Function created!"
- tab_click .dw.tabFunctions
- }
-
- }
- } -state disabled -text Define
- button $base.cancelbtn -borderwidth 1 -command {Window destroy .fw} -text Close
- place $base.l1 -x 15 -y 18 -anchor nw -bordermode ignore
- place $base.e1 -x 95 -y 15 -width 198 -height 22 -anchor nw -bordermode ignore
- place $base.l2 -x 15 -y 48 -anchor nw -bordermode ignore
- 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 400 -anchor nw -bordermode ignore
- place $base.cancelbtn -x 160 -y 255 -anchor nw -bordermode ignore
-}
-
-proc vTclWindow.iew {base} {
- if {$base == ""} {
- set base .iew
- }
- if {[winfo exists $base]} {
- wm deiconify $base; return
- }
- toplevel $base -class Toplevel
- wm focusmodel $base passive
- wm geometry $base 287x151+259+304
- wm maxsize $base 1009 738
- wm minsize $base 1 1
- wm overrideredirect $base 0
- wm resizable $base 0 0
- wm title $base "Import-Export table"
- label $base.l1 -borderwidth 0 -text {Table name}
- entry $base.e1 -background #fefefe -borderwidth 1 -textvariable ie_tablename
- label $base.l2 -borderwidth 0 -text {File name}
- entry $base.e2 -background #fefefe -borderwidth 1 -textvariable ie_filename
- label $base.l3 -borderwidth 0 -text {Field delimiter}
- entry $base.e3 -background #fefefe -borderwidth 1 -textvariable ie_delimiter
- button $base.expbtn -borderwidth 1 -command {if {$ie_tablename==""} {
- show_error "You have to supply a table name!"
-} elseif {$ie_filename==""} {
- show_error "You have to supply a external file name!"
-} else {
- if {$ie_delimiter==""} {
- set sup ""
- } else {
- set sup " USING DELIMITERS '$ie_delimiter'"
- }
- if {[.iew.expbtn cget -text]=="Import"} {
- set oper "FROM"
- } else {
- set oper "TO"
- }
- if {$oicb} {
- set sup2 " WITH OIDS "
- } else {
- set sup2 ""
- }
- set sqlcmd "COPY $ie_tablename $sup2 $oper '$ie_filename'$sup"
- cursor_clock
- if {[sql_exec noquiet $sqlcmd]} {
- tk_messageBox -title Information -parent .iew -message "Operation completed!"
- Window destroy .iew
- }
- cursor_normal
-}} -text Export
- button $base.cancelbtn -borderwidth 1 -command {Window destroy .iew} -text Cancel
- checkbutton $base.oicb -borderwidth 1 -text {with OIDs} -variable oicb
- place $base.l1 -x 25 -y 15 -anchor nw -bordermode ignore
- place $base.e1 -x 115 -y 10 -height 22 -anchor nw -bordermode ignore
- place $base.l2 -x 25 -y 45 -anchor nw -bordermode ignore
- place $base.e2 -x 115 -y 40 -height 22 -anchor nw -bordermode ignore
- place $base.l3 -x 25 -y 75 -height 18 -anchor nw -bordermode ignore
- place $base.e3 -x 115 -y 74 -width 33 -height 22 -anchor nw -bordermode ignore
- place $base.expbtn -x 60 -y 110 -height 25 -width 75 -anchor nw -bordermode ignore
- place $base.cancelbtn -x 155 -y 110 -height 25 -width 75 -anchor nw -bordermode ignore
- place $base.oicb -x 170 -y 75 -anchor nw -bordermode ignore
-}
-
-proc {mw_canvas_paste} {wn x y} {
- global mw
- $wn.c insert $mw($wn,id_edited) insert [selection get]
- set mw($wn,dirtyrec) 1
-}
-
-proc {mw_create_window} {} {
-global mwcount
- set base .mw$mwcount
- set wn .mw$mwcount
- if {[winfo exists $base]} {
- wm deiconify $base; return
- }
- toplevel $base -class Toplevel
- wm focusmodel $base passive
- wm geometry $base 550x400
- wm maxsize $base 1009 738
- wm minsize $base 550 400
- wm overrideredirect $base 0
- wm resizable $base 1 1
- wm deiconify $base
- wm title $base "Table browser"
- bind $base <Key-Delete> "mw_delete_record $wn"
- frame $base.f1 -borderwidth 2 -height 75 -relief groove -width 125
- label $base.f1.l1 -borderwidth 0 -text {Sort field}
- entry $base.f1.e1 -background #fefefe -borderwidth 1 -width 14 -highlightthickness 1 -textvariable mw($wn,sortfield)
- bind $base.f1.e1 <Key-Return> "mw_reload $wn"
- bind $base.f1.e1 <Key-KP_Enter> "mw_reload $wn"
- label $base.f1.lb1 -borderwidth 0 -text { }
- label $base.f1.l2 -borderwidth 0 -text {Filter conditions}
- entry $base.f1.e2 -background #fefefe -borderwidth 1 -highlightthickness 1 -textvariable mw($wn,filter)
- bind $base.f1.e2 <Key-Return> "mw_reload $wn"
- bind $base.f1.e2 <Key-KP_Enter> "mw_reload $wn"
- button $base.f1.b1 -borderwidth 1 -text Close -command "
-if {\[mw_save_new_record $wn\]} {
- $wn.c delete rows
- $wn.c delete header
- set sortfield {}
- set filter {}
- Window destroy $wn
- mw_free_variables $wn
-}
- "
- button $base.f1.b2 -borderwidth 1 -text Reload -command "mw_reload $wn"
- frame $base.frame20 -borderwidth 2 -height 75 -relief groove -width 125
- button $base.frame20.01 -borderwidth 1 -text < -command "mw_pan_right $wn"
- label $base.frame20.02 -anchor w -borderwidth 1 -height 1 -relief sunken -text {} -textvariable mw($wn,msg)
- button $base.frame20.03 -borderwidth 1 -text > -command "mw_pan_left $wn"
- canvas $base.c -background #fefefe -borderwidth 2 -height 207 -highlightthickness 0 -relief ridge -selectborderwidth 0 -takefocus 1 -width 295
- scrollbar $base.sb -borderwidth 1 -orient vert -width 12 -command "mw_scroll_window $wn"
- bind $base.c <Button-1> "mw_canvas_click $wn %x %y"
- bind $base.c <Button-2> "mw_canvas_paste $wn %x %y"
- bind $base.c <Button-3> "if {[mw_exit_edit $wn]} \"mw_save_new_record $wn\""
- pack $base.f1 -in $wn -anchor center -expand 0 -fill x -side top
- pack $base.f1.l1 -in $wn.f1 -anchor center -expand 0 -fill none -side left
- pack $base.f1.e1 -in $wn.f1 -anchor center -expand 0 -fill none -side left
- pack $base.f1.lb1 -in $wn.f1 -anchor center -expand 0 -fill none -side left
- pack $base.f1.l2 -in $wn.f1 -anchor center -expand 0 -fill none -side left
- pack $base.f1.e2 -in $wn.f1 -anchor center -expand 0 -fill none -side left
- pack $base.f1.b1 -in $wn.f1 -anchor center -expand 0 -fill none -side right
- pack $base.f1.b2 -in $wn.f1 -anchor center -expand 0 -fill none -side right
- pack $base.frame20 -in $wn -anchor s -expand 0 -fill x -side bottom
- pack $base.frame20.01 -in $wn.frame20 -anchor center -expand 0 -fill none -side left
- pack $base.frame20.02 -in $wn.frame20 -anchor center -expand 1 -fill x -side left
- pack $base.frame20.03 -in $wn.frame20 -anchor center -expand 0 -fill none -side right
- pack $base.c -in $wn -anchor w -expand 1 -fill both -side left
- pack $base.sb -in $wn -anchor e -expand 0 -fill y -side right
-}
-
-proc vTclWindow.nt {base} {
-global pref
- if {$base == ""} {
- set base .nt
- }
- if {[winfo exists $base]} {
- wm deiconify $base; return
- }
- toplevel $base -class Toplevel
- wm focusmodel $base passive
- wm geometry $base 614x392+78+181
- 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 "Create new table"
- entry $base.etabn \
- -background #fefefe -borderwidth 1 -selectborderwidth 0 \
- -textvariable ntw(newtablename)
- bind $base.etabn <Key-Return> {
- focus .nt.einh
- }
- label $base.li \
- -anchor w -borderwidth 0 -text Inherits
- entry $base.einh \
- -background #fefefe -borderwidth 1 -selectborderwidth 0 \
- -textvariable ntw(fathername)
- bind $base.einh <Key-Return> {
- focus .nt.e2
- }
- button $base.binh \
- -borderwidth 1 \
- -command {if {[winfo exists .nt.ddf]} {
- destroy .nt.ddf
-} else {
- create_drop_down .nt 386 23 220
- focus .nt.ddf.sb
- foreach tbl [get_tables] {.nt.ddf.lb insert end $tbl}
- bind .nt.ddf.lb <ButtonRelease-1> {
- set i [.nt.ddf.lb curselection]
- if {$i!=""} {
- if {$ntw(fathername)==""} {
- set ntw(fathername) "\"[.nt.ddf.lb get $i]\""
- } else {
- set ntw(fathername) "$ntw(fathername),\"[.nt.ddf.lb get $i]\""
- }
- }
- if {$i!=""} {focus .nt.e2}
- destroy .nt.ddf
- break
- }
-}} \
- -highlightthickness 0 -takefocus 0 -image dnarw
- entry $base.e2 \
- -background #fefefe -borderwidth 1 -selectborderwidth 0 \
- -textvariable ntw(fldname)
- bind $base.e2 <Key-Return> {
- focus .nt.e1
- }
- entry $base.e1 \
- -background #fefefe -borderwidth 1 -selectborderwidth 0 \
- -textvariable ntw(fldtype)
- bind $base.e1 <Key-Return> {
- focus .nt.e5
- }
- entry $base.e3 \
- -background #fefefe -borderwidth 1 -selectborderwidth 0 \
- -textvariable ntw(fldsize)
- bind $base.e3 <Key-Return> {
- focus .nt.e5
- }
- entry $base.e5 \
- -background #fefefe -borderwidth 1 -selectborderwidth 0 \
- -textvariable ntw(defaultval)
- bind $base.e5 <Key-Return> {
- focus .nt.cb1
- }
- checkbutton $base.cb1 \
- -borderwidth 1 \
- -offvalue { } -onvalue { NOT NULL} -text {field cannot be null} \
- -variable ntw(notnull)
- label $base.lab1 \
- -borderwidth 0 -text type
- label $base.lab2 \
- -borderwidth 0 -anchor w -text {Field name}
- label $base.lab3 \
- -borderwidth 0 -text size
- label $base.lab4 \
- -borderwidth 0 -anchor w -text {Default value}
- button $base.addfld \
- -borderwidth 1 -command add_new_field \
- -text {Add field}
- button $base.delfld \
- -borderwidth 1 -command {catch {.nt.lb delete [.nt.lb curselection]}} \
- -text {Delete field}
- button $base.emptb \
- -borderwidth 1 -command {.nt.lb delete 0 [.nt.lb size]} \
- -text {Delete all}
- button $base.maketbl \
- -borderwidth 1 -command create_table \
- -text Create
- listbox $base.lb \
- -background #fefefe -borderwidth 1 \
- -selectbackground #c3c3c3 \
- -font $pref(font_fix) \
- -selectborderwidth 0 -yscrollcommand {.nt.sb set}
- bind $base.lb <ButtonRelease-1> {
- if {[.nt.lb curselection]!=""} {
- set fldname [string trim [lindex [split [.nt.lb get [.nt.lb curselection]]] 0]]
-}
- }
- button $base.exitbtn \
- -borderwidth 1 -command {Window destroy .nt} \
- -text Cancel
- label $base.l1 \
- -anchor w -borderwidth 1 \
- -relief raised -text { field name}
- label $base.l2 \
- -borderwidth 1 \
- -relief raised -text type
- label $base.l3 \
- -borderwidth 1 \
- -relief raised -text options
- scrollbar $base.sb \
- -borderwidth 1 -command {.nt.lb yview} -orient vert
- label $base.l93 \
- -anchor w -borderwidth 0 -text {Table name}
- button $base.mvup \
- -borderwidth 1 \
- -command {if {[.nt.lb size]>1} {
- set i [.nt.lb curselection]
- if {($i!="")&&($i>0)} {
- .nt.lb insert [expr $i-1] [.nt.lb get $i]
- .nt.lb delete [expr $i+1]
- .nt.lb selection set [expr $i-1]
- }
-}} \
- -text {Move up}
- button $base.mvdn \
- -borderwidth 1 \
- -command {if {[.nt.lb size]>1} {
- set i [.nt.lb curselection]
- if {($i!="")&&($i<[expr [.nt.lb size]-1])} {
- .nt.lb insert [expr $i+2] [.nt.lb get $i]
- .nt.lb delete $i
- .nt.lb selection set [expr $i+1]
- }
-}} \
- -text {Move down}
- button $base.button17 \
- -borderwidth 1 \
- -command {
-if {[winfo exists .nt.ddf]} {
- destroy .nt.ddf
-} else {
- create_drop_down .nt 291 80 97
- focus .nt.ddf.sb
- .nt.ddf.lb insert end char varchar text int2 int4 serial float4 float8 money abstime date datetime interval reltime time timespan timestamp boolean box circle line lseg path point polygon
- bind .nt.ddf.lb <ButtonRelease-1> {
- set i [.nt.ddf.lb curselection]
- if {$i!=""} {set ntw(fldtype) [.nt.ddf.lb get $i]}
- destroy .nt.ddf
- if {$i!=""} {focus .nt.e3}
- break
- }
-}} \
- -highlightthickness 0 -takefocus 0 -image dnarw
- label $base.lco \
- -borderwidth 0 -anchor w -text Constraint
- entry $base.eco \
- -background #fefefe -borderwidth 1 -textvariable ntw(constraint)
- label $base.lch \
- -borderwidth 0 -text check
- entry $base.ech \
- -background #fefefe -borderwidth 1 -textvariable ntw(check)
- label $base.ll \
- -borderwidth 1 \
- -relief raised
- checkbutton $base.pk \
- -borderwidth 1 \
- -offvalue { } -onvalue * -text {primary key} -variable ntw(pk)
- label $base.lpk \
- -borderwidth 1 \
- -relief raised -text K
- place $base.etabn \
- -x 85 -y 5 -width 156 -height 20 -anchor nw -bordermode ignore
- place $base.li \
- -x 245 -y 7 -width 42 -height 16 -anchor nw -bordermode ignore
- place $base.einh \
- -x 290 -y 5 -width 318 -height 20 -anchor nw -bordermode ignore
- place $base.binh \
- -x 590 -y 7 -width 16 -height 16 -anchor nw -bordermode ignore
- place $base.e2 \
- -x 85 -y 60 -width 156 -height 20 -anchor nw -bordermode ignore
- place $base.e1 \
- -x 291 -y 60 -width 98 -height 20 -anchor nw -bordermode ignore
- place $base.e3 \
- -x 445 -y 60 -width 46 -height 20 -anchor nw -bordermode ignore
- place $base.e5 \
- -x 85 -y 82 -width 156 -height 20 -anchor nw -bordermode ignore
- place $base.cb1 \
- -x 245 -y 83 -width 131 -height 20 -anchor nw -bordermode ignore
- place $base.lab1 \
- -x 247 -y 62 -width 26 -height 16 -anchor nw -bordermode ignore
- place $base.lab2 \
- -x 4 -y 62 -width 64 -height 16 -anchor nw -bordermode ignore
- place $base.lab3 \
- -x 410 -y 62 -width 24 -height 16 -anchor nw -bordermode ignore
- place $base.lab4 \
- -x 5 -y 83 -width 76 -height 16 -anchor nw -bordermode ignore
- place $base.addfld \
- -x 534 -y 60 -width 75 -height 26 -anchor nw -bordermode ignore
- place $base.delfld \
- -x 534 -y 190 -width 75 -height 26 -anchor nw -bordermode ignore
- place $base.emptb \
- -x 534 -y 220 -width 75 -height 26 -anchor nw -bordermode ignore
- place $base.maketbl \
- -x 534 -y 365 -width 75 -height 26 -anchor nw -bordermode ignore
- place $base.lb \
- -x 4 -y 121 -width 506 -height 269 -anchor nw -bordermode ignore
- place $base.exitbtn \
- -x 534 -y 335 -width 75 -height 26 -anchor nw -bordermode ignore
- place $base.l1 \
- -x 18 -y 105 -width 195 -height 18 -anchor nw -bordermode ignore
- place $base.l2 \
- -x 213 -y 105 -width 88 -height 18 -anchor nw -bordermode ignore
- place $base.l3 \
- -x 301 -y 105 -width 225 -height 18 -anchor nw -bordermode ignore
- place $base.sb \
- -x 509 -y 121 -width 18 -height 269 -anchor nw -bordermode ignore
- place $base.l93 \
- -x 4 -y 7 -width 67 -height 16 -anchor nw -bordermode ignore
- place $base.mvup \
- -x 534 -y 120 -width 75 -height 26 -anchor nw -bordermode ignore
- place $base.mvdn \
- -x 534 -y 150 -width 75 -height 26 -anchor nw -bordermode ignore
- place $base.button17 \
- -x 371 -y 62 -width 16 -height 16 -anchor nw -bordermode ignore
- place $base.lco \
- -x 5 -y 28 -width 58 -height 16 -anchor nw -bordermode ignore
- place $base.eco \
- -x 85 -y 27 -width 156 -height 20 -anchor nw -bordermode ignore
- place $base.lch \
- -x 245 -y 30 -anchor nw -bordermode ignore
- place $base.ech \
- -x 290 -y 27 -width 318 -height 22 -anchor nw -bordermode ignore
- place $base.ll \
- -x 5 -y 53 -width 603 -height 2 -anchor nw -bordermode ignore
- place $base.pk \
- -x 407 -y 83 -width 93 -height 20 -anchor nw -bordermode ignore
- place $base.lpk \
- -x 4 -y 105 -width 14 -height 18 -anchor nw -bordermode ignore
-}
-
-proc vTclWindow.pw {base} {
-global pref
- if {$base == ""} {
- set base .pw
- }
- if {[winfo exists $base]} {
- wm deiconify $base; return
- }
- toplevel $base -class Toplevel
- wm focusmodel $base passive
- wm geometry $base 322x227+210+219
- wm maxsize $base 1009 738
- wm minsize $base 1 1
- wm overrideredirect $base 0
- wm resizable $base 0 0
- wm title $base "Preferences"
- label $base.l1 -borderwidth 0 -text {Max rows displayed in table/query view}
- entry $base.e1 -background #fefefe -borderwidth 1 -highlightthickness 1 -selectborderwidth 0 -textvariable pref(rows)
- label $base.l2 -borderwidth 0 -text "Table viewer font"
- radiobutton $base.tvf -borderwidth 1 -text {fixed width} -value clean -variable pref(tvfont)
- radiobutton $base.tvfv -borderwidth 1 -text proportional -value helv -variable pref(tvfont)
- label $base.lfn -borderwidth 0 -anchor w -text "Font normal"
- label $base.lfb -borderwidth 0 -anchor w -text "Font bold"
- label $base.lfi -borderwidth 0 -anchor w -text "Font italic"
- label $base.lff -borderwidth 0 -anchor w -text "Font fixed"
- entry $base.efn -borderwidth 1 -highlightthickness 1 -selectborderwidth 0 -textvariable pref(font_normal)
- entry $base.efb -borderwidth 1 -highlightthickness 1 -selectborderwidth 0 -textvariable pref(font_bold)
- entry $base.efi -borderwidth 1 -highlightthickness 1 -selectborderwidth 0 -textvariable pref(font_italic)
- entry $base.eff -borderwidth 1 -highlightthickness 1 -selectborderwidth 0 -textvariable pref(font_fix)
- label $base.ll -borderwidth 1 -relief sunken
- checkbutton $base.alcb -borderwidth 1 -text {Auto-load the last opened database at startup} -variable pref(autoload)
- button $base.okbtn -borderwidth 1 -command {
-if {$pref(rows)>200} {
- tk_messageBox -title Warning -parent .pw -message "A big number of rows displayed in table view will take a lot of memory!"
-}
-save_pref
-Window destroy .pw
-tk_messageBox -title Warning -message "Changed fonts may appear in the next working session!"
-} -text Ok
- place $base.l1 -x 10 -y 10 -anchor nw -bordermode ignore
- place $base.e1 -x 240 -y 8 -width 65 -height 20 -anchor nw -bordermode ignore
- place $base.l2 -x 10 -y 38 -anchor nw -bordermode ignore
- place $base.tvf -x 115 -y 34 -anchor nw -bordermode ignore
- place $base.tvfv -x 205 -y 34 -anchor nw -bordermode ignore
- place $base.lfn -x 10 -y 65 -anchor nw
- place $base.lfb -x 10 -y 86 -anchor nw
- place $base.lfi -x 10 -y 107 -anchor nw
- place $base.lff -x 10 -y 128 -anchor nw
- place $base.efn -x 80 -y 63 -width 230 -height 20
- place $base.efb -x 80 -y 84 -width 230 -height 20
- place $base.efi -x 80 -y 105 -width 230 -height 20
- place $base.eff -x 80 -y 126 -width 230 -height 20
- place $base.ll -x 10 -y 150 -width 301 -height 2 -anchor nw -bordermode ignore
- place $base.alcb -x 10 -y 155 -anchor nw -bordermode ignore
- place $base.okbtn -x 125 -y 195 -width 80 -height 26 -anchor nw -bordermode ignore
-}
-
-proc vTclWindow.qb {base} {
-global pref
- if {$base == ""} {
- set base .qb
- }
- if {[winfo exists $base]} {
- wm deiconify $base; return
- }
- toplevel $base -class Toplevel
- wm focusmodel $base passive
- wm geometry $base 442x344+150+150
- 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 "Query builder"
- label $base.lqn -borderwidth 0 -text {Query name}
- entry $base.eqn -background #fefefe -borderwidth 1 -foreground #000000 -highlightthickness 1 -selectborderwidth 0 -textvariable queryname
- button $base.savebtn -borderwidth 1 -command {if {$queryname==""} then {
- show_error "You have to supply a name for this query!"
- focus .qb.eqn
-} else {
- set qcmd [.qb.text1 get 1.0 end]
- regsub -all "\n" $qcmd " " qcmd
- if {$qcmd==""} then {
- show_error "This query has no commands ?"
- } else {
- if { [lindex [split [string toupper [string trim $qcmd]]] 0] == "SELECT" } {
- set qtype S
- } else {
- set qtype A
- }
- if {$cbv} {
- wpg_select $dbc "select pg_get_viewdef('$queryname') as vd" tup {
- if {$tup(vd)!="Not a view"} {
- if {[tk_messageBox -title Warning -message "View '$queryname' already exists! Delete ?" -type yesno -default no]=="yes"} {
- set pg_res [wpg_exec $dbc "drop view \"$queryname\""]
- if {$pgsql(status)!="PGRES_COMMAND_OK"} {
- show_error "Error deleting view '$queryname'"
- }
- }
- }
- }
- set pgres [wpg_exec $dbc "create view \"$queryname\" as $qcmd"]
- if {$pgsql(status)!="PGRES_COMMAND_OK"} {
- show_error "Error defining view\n\n$pgsql(errmsg)"
- } else {
- tab_click .dw.tabViews
- Window destroy .qb
- }
- catch {pg_result $pgres -clear}
- } else {
- regsub -all "'" $qcmd "''" qcmd
- cursor_clock
- if {$queryoid==0} then {
- set pgres [wpg_exec $dbc "insert into pga_queries values ('$queryname','$qtype','$qcmd')"]
- } else {
- set pgres [wpg_exec $dbc "update pga_queries set queryname='$queryname',querytype='$qtype',querycommand='$qcmd' where oid=$queryoid"]
- }
- cursor_normal
- if {$pgsql(status)!="PGRES_COMMAND_OK"} then {
- show_error "Error executing query\n$pgres(errmsg)"
- } else {
- tab_click .dw.tabQueries
- if {$queryoid==0} {set queryoid [pg_result $pgres -oid]}
- }
- }
- catch {pg_result $pgres -clear}
- }
-}} -text {Save query definition}
- button $base.execbtn -borderwidth 1 -command {
-set qcmd [.qb.text1 get 0.0 end]
-regsub -all "\n" [string trim $qcmd] " " qcmd
-if {[lindex [split [string toupper $qcmd]] 0]!="SELECT"} {
- if {[tk_messageBox -title Warning -parent .qb -message "This is an action query!\n\nExecute it?" -type yesno -default no]=="yes"} {
- sql_exec noquiet $qcmd
- }
-} else {
- set wn [mw_get_new_name]
- set mw($wn,query) [subst $qcmd]
- set mw($wn,updatable) 0
- set mw($wn,isaquery) 1
- mw_create_window
- mw_load_layout $wn $queryname
- mw_select_records $wn $mw($wn,query)
-}
-} -text {Execute query}
- button $base.termbtn -borderwidth 1 -command {.qb.cbv configure -state normal
-set cbv 0
-set queryname {}
-.qb.text1 delete 1.0 end
-Window destroy .qb} -text Close
- text $base.text1 -background #fefefe -borderwidth 1 -font $pref(font_normal) -foreground #000000 -highlightthickness 1 -wrap word
- checkbutton $base.cbv -borderwidth 1 -text {Save this query as a view} -variable cbv
- button $base.qlshow -borderwidth 1 -command {Window show .ql
-ql_draw_lizzard
-focus .ql.entt} -text {Visual designer}
- place $base.lqn -x 5 -y 5 -anchor nw -bordermode ignore
- place $base.eqn -x 80 -y 1 -width 355 -height 24 -anchor nw -bordermode ignore
- place $base.savebtn -x 5 -y 60 -height 25 -anchor nw -bordermode ignore
- place $base.execbtn -x 150 -y 60 -height 25 -anchor nw -bordermode ignore
- place $base.termbtn -x 375 -y 60 -width 50 -height 25 -anchor nw -bordermode ignore
- place $base.text1 -x 5 -y 90 -width 430 -height 246 -anchor nw -bordermode ignore
- place $base.cbv -x 5 -y 30 -height 25 -anchor nw -bordermode ignore
- place $base.qlshow -x 255 -y 60 -height 25 -anchor nw -bordermode ignore
-}
-
-proc vTclWindow.ql {base} {
-global pref
- if {$base == ""} {
- set base .ql
- }
- if {[winfo exists $base]} {
- wm deiconify $base; return
- }
- toplevel $base -class Toplevel
- wm focusmodel $base passive
- wm geometry $base 759x530+10+13
- wm maxsize $base 1009 738
- wm minsize $base 1 1
- wm overrideredirect $base 0
- wm resizable $base 1 1
- wm deiconify $base
- wm title $base "Visual query designer"
- bind $base <B1-Motion> {
- ql_pan %x %y
- }
- bind $base <Button-1> {
- qlc_click %x %y %W
- }
- bind $base <ButtonRelease-1> {
- ql_dragstop %x %y
- }
- bind $base <Key-Delete> {
- ql_delete_object
- }
- canvas $base.c -background #fefefe -borderwidth 2 -height 207 -relief ridge -takefocus 0 -width 295
- button $base.exitbtn -borderwidth 1 -command {
-ql_init
-Window destroy .ql} -text Close
- button $base.showbtn -borderwidth 1 -command ql_show_sql -text {Show SQL}
- label $base.l12 -borderwidth 0 -text {Add table}
- entry $base.entt -background #fefefe -borderwidth 1 -highlightthickness 1 -selectborderwidth 0 -textvariable qlvar(newtablename)
- bind $base.entt <Key-Return> {
- ql_add_new_table
- }
- button $base.execbtn -borderwidth 1 -command {
-set qcmd [ql_compute_sql]
-set wn [mw_get_new_name]
-set mw($wn,query) [subst $qcmd]
-set mw($wn,updatable) 0
-set mw($wn,isaquery) 1
-mw_create_window
-mw_load_layout $wn nolayoutneeded
-mw_select_records $wn $mw($wn,query)} -text {Execute SQL}
- button $base.stoqb -borderwidth 1 -command {Window show .qb
-.qb.text1 delete 1.0 end
-.qb.text1 insert end [ql_compute_sql]
-focus .qb} -text {Save to query builder}
- button $base.bdd -borderwidth 1 -command {if {[winfo exists .ql.ddf]} {
- destroy .ql.ddf
-} else {
- create_drop_down .ql 70 27 200
- focus .ql.ddf.sb
- foreach tbl [get_tables] {.ql.ddf.lb insert end $tbl}
- bind .ql.ddf.lb <ButtonRelease-1> {
- set i [.ql.ddf.lb curselection]
- if {$i!=""} {
- set qlvar(newtablename) [.ql.ddf.lb get $i]
- ql_add_new_table
- }
- destroy .ql.ddf
- break
- }
-}} -image dnarw
- place $base.c -x 5 -y 30 -width 748 -height 500 -anchor nw -bordermode ignore
- place $base.exitbtn -x 695 -y 5 -height 25 -anchor nw -bordermode ignore
- place $base.showbtn -x 367 -y 5 -height 25 -anchor nw -bordermode ignore
- place $base.l12 -x 10 -y 8 -width 53 -height 16 -anchor nw -bordermode ignore
- place $base.entt -x 70 -y 7 -width 126 -height 20 -anchor nw -bordermode ignore
- place $base.execbtn -x 452 -y 5 -height 25 -anchor nw -bordermode ignore
- place $base.stoqb -x 550 -y 5 -height 25 -anchor nw -bordermode ignore
- place $base.bdd -x 200 -y 7 -width 17 -height 20 -anchor nw -bordermode ignore
-}
-
-
-proc vTclWindow.rf {base} {
- if {$base == ""} {
- set base .rf
- }
- if {[winfo exists $base]} {
- wm deiconify $base; return
- }
- toplevel $base -class Toplevel
- wm focusmodel $base passive
- wm geometry $base 272x105+294+262
- wm maxsize $base 1009 738
- wm minsize $base 1 1
- wm overrideredirect $base 0
- wm resizable $base 0 0
- wm title $base "Rename"
- label $base.l1 -borderwidth 0 -text {New name}
- entry $base.e1 -background #fefefe -borderwidth 1 -textvariable newobjname
- button $base.b1 -borderwidth 1 -command {
- if {$newobjname==""} {
- show_error "You must give object a new name!"
- } elseif {$activetab=="Tables"} {
- set retval [sql_exec noquiet "alter table \"$oldobjname\" rename to \"$newobjname\""]
- if {$retval} {
- sql_exec quiet "update pga_layout set tablename='$newobjname' where tablename='$oldobjname'"
- cmd_Tables
- Window destroy .rf
- }
- } elseif {$activetab=="Queries"} {
- set pgres [wpg_exec $dbc "select * from pga_queries where queryname='$newobjname'"]
- if {$pgsql(status)!="PGRES_TUPLES_OK"} {
- show_error "Error retrieving from pga_queries\n$pgsql(errmsg)\n$pgsql(status)"
- } elseif {[pg_result $pgres -numTuples]>0} {
- show_error "Query \"$newobjname\" already exists!"
- } else {
- sql_exec noquiet "update pga_queries set queryname='$newobjname' where queryname='$oldobjname'"
- sql_exec noquiet "update pga_layout set tablename='$newobjname' where tablename='$oldobjname'"
- cmd_Queries
- Window destroy .rf
- }
- catch {pg_result $pgres -clear}
- }
- } -text Rename
- button $base.b2 -borderwidth 1 -command {Window destroy .rf} -text Cancel
- place $base.l1 -x 15 -y 28 -anchor nw -bordermode ignore
- place $base.e1 -x 100 -y 25 -anchor nw -bordermode ignore
- place $base.b1 -x 65 -y 65 -width 70 -anchor nw -bordermode ignore
- place $base.b2 -x 145 -y 65 -width 70 -anchor nw -bordermode ignore
-}
-
-proc vTclWindow.rb {base} {
-global pref
- if {$base == ""} {
- set base .rb
- }
- if {[winfo exists $base]} {
- wm deiconify $base; return
- }
- toplevel $base -class Toplevel
- wm focusmodel $base passive
- wm geometry $base 652x426+96+120
- 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 "Report builder"
- label $base.l1 \
- -borderwidth 1 \
- -relief raised -text {Report fields}
- listbox $base.lb \
- -background #fefefe -borderwidth 1 \
- -selectbackground #c3c3c3 \
- -highlightthickness 1 -selectborderwidth 0 \
- -yscrollcommand {.rb.sb set}
- bind $base.lb <ButtonRelease-1> {
- rb_add_field
- }
- canvas $base.c \
- -background #fffeff -borderwidth 2 -height 207 -highlightthickness 0 \
- -relief ridge -takefocus 1 -width 295
- bind $base.c <Button-1> {
- rb_dragstart %W %x %y
- }
- bind $base.c <ButtonRelease-1> {
- rb_dragstop %x %y
- }
- bind $base.c <Key-Delete> {
- rb_delete_object
- }
- bind $base.c <Motion> {
- rb_dragit %W %x %y
- }
- button $base.bt2 \
- -borderwidth 1 \
- -command {if {[tk_messageBox -title Warning -parent .rb -message "All report information will be deleted.\n\nProceed ?" -type yesno -default no]=="yes"} then {
-.rb.c delete all
-rb_init
-rb_draw_regions
-}} \
- -text {Clear all}
- button $base.bt4 \
- -borderwidth 1 -command rb_preview \
- -text Preview
- button $base.bt5 \
- -borderwidth 1 -command {Window destroy .rb} \
- -text Quit
- scrollbar $base.sb \
- -borderwidth 1 -command {.rb.lb yview} -orient vert
- label $base.lmsg \
- -anchor w \
- -relief groove -text {Report header} -textvariable rbvar(msg)
- entry $base.e2 \
- -background #fefefe -borderwidth 1 -highlightthickness 0 \
- -textvariable rbvar(tablename)
- bind $base.e2 <Key-Return> {
- rb_get_report_fields
- }
- entry $base.elab \
- -background #fefefe -borderwidth 1 -highlightthickness 0 \
- -textvariable rbvar(labeltext)
- button $base.badl \
- -borderwidth 1 -command rb_add_label \
- -text {Add label}
- label $base.lbold \
- -borderwidth 1 -relief raised -text B
- bind $base.lbold <Button-1> {
- if {[rb_get_bold]=="Bold"} {
- .rb.lbold configure -relief raised
-} else {
- .rb.lbold configure -relief sunken
-}
-rb_change_object_font
- }
- label $base.lita \
- -borderwidth 1 \
- -font $pref(font_italic) \
- -relief raised -text i
- bind $base.lita <Button-1> {
- if {[rb_get_italic]=="O"} {
- .rb.lita configure -relief raised
-} else {
- .rb.lita configure -relief sunken
-}
-rb_change_object_font
- }
- entry $base.eps \
- -background #fefefe -highlightthickness 0 -relief groove \
- -textvariable rbvar(pointsize)
- bind $base.eps <Key-Return> {
- rb_change_object_font
- }
- label $base.linfo \
- -anchor w \
- -relief groove -text {Database field} -textvariable rbvar(info)
- label $base.llal \
- -borderwidth 0 -text Align
- button $base.balign \
- -borderwidth 0 -command rb_flip_align \
- -relief groove -text right
- button $base.savebtn \
- -borderwidth 1 -command rb_save_report \
- -text Save
- label $base.lfn \
- -borderwidth 0 -text Font
- button $base.bfont \
- -borderwidth 0 \
- -command {set temp [.rb.bfont cget -text]
-if {$temp=="Courier"} then {
- .rb.bfont configure -text Helvetica
-} else {
- .rb.bfont configure -text Courier
-}
-rb_change_object_font} \
- -relief groove -text Courier
- button $base.bdd \
- -borderwidth 1 \
- -command {if {[winfo exists .rb.ddf]} {
- destroy .rb.ddf
-} else {
- create_drop_down .rb 405 22 200
- focus .rb.ddf.sb
- foreach tbl [get_tables] {.rb.ddf.lb insert end $tbl}
- bind .rb.ddf.lb <ButtonRelease-1> {
- set i [.rb.ddf.lb curselection]
- if {$i!=""} {set rbvar(tablename) [.rb.ddf.lb get $i]}
- destroy .rb.ddf
- rb_get_report_fields
- break
- }
-}} \
- -highlightthickness 0 -image dnarw
- label $base.lrn \
- -borderwidth 0 -text {Report name}
- entry $base.ern \
- -background #fefefe -borderwidth 1 -highlightthickness 0 \
- -textvariable rbvar(reportname)
- bind $base.ern <Key-F5> {
- rb_load_report
- }
- label $base.lrs \
- -borderwidth 0 -text {Report source}
- label $base.ls \
- -borderwidth 1 -relief raised
- entry $base.ef \
- -background #fefefe -borderwidth 1 -highlightthickness 0 \
- -textvariable rbvar(formula)
- button $base.baf \
- -borderwidth 1 \
- -text {Add formula}
- place $base.l1 \
- -x 5 -y 55 -width 131 -height 18 -anchor nw -bordermode ignore
- place $base.lb \
- -x 5 -y 70 -width 118 -height 121 -anchor nw -bordermode ignore
- place $base.c \
- -x 140 -y 75 -width 508 -height 345 -anchor nw -bordermode ignore
- place $base.bt2 \
- -x 5 -y 365 -width 64 -height 26 -anchor nw -bordermode ignore
- place $base.bt4 \
- -x 70 -y 365 -width 66 -height 26 -anchor nw -bordermode ignore
- place $base.bt5 \
- -x 70 -y 395 -width 66 -height 26 -anchor nw -bordermode ignore
- place $base.sb \
- -x 120 -y 70 -width 18 -height 122 -anchor nw -bordermode ignore
- place $base.lmsg \
- -x 142 -y 55 -width 151 -height 18 -anchor nw -bordermode ignore
- place $base.e2 \
- -x 405 -y 4 -width 129 -height 18 -anchor nw -bordermode ignore
- place $base.elab \
- -x 5 -y 225 -width 130 -height 18 -anchor nw -bordermode ignore
- place $base.badl \
- -x 5 -y 243 -width 132 -height 26 -anchor nw -bordermode ignore
- place $base.lbold \
- -x 535 -y 55 -width 18 -height 18 -anchor nw -bordermode ignore
- place $base.lita \
- -x 555 -y 55 -width 18 -height 18 -anchor nw -bordermode ignore
- place $base.eps \
- -x 500 -y 55 -width 30 -height 18 -anchor nw -bordermode ignore
- place $base.linfo \
- -x 295 -y 55 -width 91 -height 18 -anchor nw -bordermode ignore
- place $base.llal \
- -x 575 -y 56 -anchor nw -bordermode ignore
- place $base.balign \
- -x 610 -y 54 -width 35 -height 21 -anchor nw -bordermode ignore
- place $base.savebtn \
- -x 5 -y 395 -width 64 -height 26 -anchor nw -bordermode ignore
- place $base.lfn \
- -x 405 -y 56 -anchor nw -bordermode ignore
- place $base.bfont \
- -x 435 -y 54 -width 65 -height 21 -anchor nw -bordermode ignore
- place $base.bdd \
- -x 535 -y 4 -width 15 -height 20 -anchor nw -bordermode ignore
- place $base.lrn \
- -x 5 -y 5 -anchor nw -bordermode ignore
- place $base.ern \
- -x 80 -y 4 -width 219 -height 18 -anchor nw -bordermode ignore
- place $base.lrs \
- -x 320 -y 5 -anchor nw -bordermode ignore
- place $base.ls \
- -x 5 -y 30 -width 641 -height 2 -anchor nw -bordermode ignore
- place $base.ef \
- -x 5 -y 280 -width 130 -height 18 -anchor nw -bordermode ignore
- place $base.baf \
- -x 5 -y 298 -width 132 -height 26 -anchor nw -bordermode ignore
-}
-
-proc vTclWindow.rpv {base} {
- if {$base == ""} {
- set base .rpv
- }
- if {[winfo exists $base]} {
- wm deiconify $base; return
- }
- toplevel $base -class Toplevel
- wm focusmodel $base passive
- wm geometry $base 495x500+230+50
- wm maxsize $base 1009 738
- wm minsize $base 1 1
- wm overrideredirect $base 0
- wm resizable $base 1 1
- wm title $base "Report preview"
- frame $base.fr \
- -borderwidth 2 -height 75 -relief groove -width 125
- canvas $base.fr.c \
- -background #fcfefe -borderwidth 2 -height 207 -relief ridge \
- -scrollregion {0 0 1000 824} -width 295 \
- -yscrollcommand {.rpv.fr.sb set}
- scrollbar $base.fr.sb \
- -borderwidth 1 -command {.rpv.fr.c yview} -highlightthickness 0 \
- -orient vert -width 12
- frame $base.f1 \
- -borderwidth 2 -height 75 -width 125
- button $base.f1.button18 \
- -borderwidth 1 -command {if {$rbvar(justpreview)} then {Window destroy .rb} ; Window destroy .rpv} \
- -text Close
- button $base.f1.button17 \
- -borderwidth 1 -command rb_print_report \
- -text Print
- pack $base.fr \
- -in .rpv -anchor center -expand 1 -fill both -side top
- pack $base.fr.c \
- -in .rpv.fr -anchor center -expand 1 -fill both -side left
- pack $base.fr.sb \
- -in .rpv.fr -anchor center -expand 0 -fill y -side right
- pack $base.f1 \
- -in .rpv -anchor center -expand 0 -fill none -side top
- pack $base.f1.button18 \
- -in .rpv.f1 -anchor center -expand 0 -fill none -side right
- pack $base.f1.button17 \
- -in .rpv.f1 -anchor center -expand 0 -fill none -side left
-}
-
-proc vTclWindow.sqf {base} {
- if {$base == ""} {
- set base .sqf
- }
- if {[winfo exists $base]} {
- wm deiconify $base; return
- }
- toplevel $base -class Toplevel
- wm focusmodel $base passive
- wm geometry $base 310x223+245+158
- wm maxsize $base 1009 738
- wm minsize $base 1 1
- wm overrideredirect $base 0
- wm resizable $base 0 0
- wm title $base "Sequence"
- label $base.l1 -anchor w -borderwidth 0 -text {Sequence name}
- entry $base.e1 -borderwidth 1 -highlightthickness 1 -textvariable seq_name
- label $base.l2 -borderwidth 0 -text Increment
- entry $base.e2 -borderwidth 1 -highlightthickness 1 -selectborderwidth 0 -textvariable seq_inc
- label $base.l3 -borderwidth 0 -text {Start value}
- entry $base.e3 -borderwidth 1 -highlightthickness 1 -selectborderwidth 0 -textvariable seq_start
- label $base.l4 -borderwidth 0 -text Minvalue
- entry $base.e4 -borderwidth 1 -highlightthickness 1 -selectborderwidth 0 -textvariable seq_minval
- label $base.l5 -borderwidth 0 -text Maxvalue
- entry $base.e5 -borderwidth 1 -highlightthickness 1 -selectborderwidth 0 -textvariable seq_maxval
- button $base.defbtn -borderwidth 1 -command {
- if {$seq_name==""} {
- show_error "You should supply a name for this sequence"
- } else {
- set s1 {};set s2 {};set s3 {};set s4 {};
- if {$seq_inc!=""} {set s1 "increment $seq_inc"};
- if {$seq_start!=""} {set s2 "start $seq_start"};
- if {$seq_minval!=""} {set s3 "minvalue $seq_minval"};
- if {$seq_maxval!=""} {set s4 "maxvalue $seq_maxval"};
- set sqlcmd "create sequence \"$seq_name\" $s1 $s2 $s3 $s4"
- if {[sql_exec noquiet $sqlcmd]} {
- cmd_Sequences
- tk_messageBox -title Information -parent .sqf -message "Sequence created!"
- }
- }
- } -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
- .sqf.l3 configure -text {Start value}
-}
-place .sqf.defbtn -x 40 -y 175
-Window destroy .sqf
-} -text Close
- place $base.l1 -x 20 -y 20 -width 111 -height 18 -anchor nw -bordermode ignore
- place $base.e1 -x 135 -y 19 -anchor nw -bordermode ignore
- place $base.l2 -x 20 -y 50 -anchor nw -bordermode ignore
- 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.sw {base} {
-global pref
- if {$base == ""} {
- set base .sw
- }
- if {[winfo exists $base]} {
- wm deiconify $base; return
- }
- toplevel $base -class Toplevel
- wm focusmodel $base passive
- wm geometry $base 594x416+192+152
- wm maxsize $base 1009 738
- wm minsize $base 300 300
- wm overrideredirect $base 0
- wm resizable $base 1 1
- wm title $base "Design script"
- frame $base.f1 -height 55 -relief groove -width 125
- label $base.f1.l1 -borderwidth 0 -text {Script name}
- entry $base.f1.e1 -background #fefefe -borderwidth 1 -highlightthickness 0 -textvariable scriptname -width 32
- text $base.src -background #fefefe -font $pref(font_normal) -height 2 -highlightthickness 1 -selectborderwidth 0 -width 2
- frame $base.f2 -height 75 -relief groove -width 125
- button $base.f2.b1 -borderwidth 1 -command {Window destroy .sw} -text Cancel
- button $base.f2.b2 -borderwidth 1 -command {if {$scriptname==""} {
- tk_messageBox -title Warning -parent .sw -message "The script must have a name!"
-} else {
- sql_exec noquiet "delete from pga_scripts where scriptname='$scriptname'"
- regsub -all {\\} [.sw.src get 1.0 end] {\\\\} scriptsource
- regsub -all ' $scriptsource \\' scriptsource
- sql_exec noquiet "insert into pga_scripts values ('$scriptname','$scriptsource')"
- cmd_Scripts
-}} -text Save -width 6
- pack $base.f1 -in .sw -anchor center -expand 0 -fill x -pady 2 -side top
- pack $base.f1.l1 -in .sw.f1 -anchor center -expand 0 -fill none -ipadx 2 -side left
- pack $base.f1.e1 -in .sw.f1 -anchor center -expand 0 -fill none -side left
- pack $base.src -in .sw -anchor center -expand 1 -fill both -padx 2 -side top
- pack $base.f2 -in .sw -anchor center -expand 0 -fill none -side top
- pack $base.f2.b1 -in .sw.f2 -anchor center -expand 0 -fill none -side right
- pack $base.f2.b2 -in .sw.f2 -anchor center -expand 0 -fill none -side right
-}
-
-proc vTclWindow.tiw {base} {
-global pref
- if {$base == ""} {
- set base .tiw
- }
- if {[winfo exists $base]} {
- wm deiconify $base; return
- }
- toplevel $base -class Toplevel
- wm focusmodel $base passive
- wm geometry $base 390x460+243+20
- wm maxsize $base 1009 738
- wm minsize $base 1 1
- wm overrideredirect $base 0
- wm resizable $base 0 0
- wm title $base "Table information"
- label $base.l1 -borderwidth 0 -text {Table name}
- label $base.l2 -anchor w -borderwidth 0 -text conturi -textvariable tiw(tablename)
- label $base.l3 -borderwidth 0 -text Owner
- label $base.l4 -anchor w -borderwidth 1 -textvariable tiw(owner)
- listbox $base.lb -background #fefefe -selectbackground #c3c3c3 -borderwidth 1 -font $pref(font_fix) -highlightthickness 1 -selectborderwidth 0 -yscrollcommand {.tiw.sb set}
- scrollbar $base.sb -activebackground #d9d9d9 -activerelief sunken -borderwidth 1 -command {.tiw.lb yview} -orient vert
- button $base.closebtn -borderwidth 1 -command {Window destroy .tiw} -pady 3 -text Close
- button $base.renbtn -borderwidth 1 -command {
- if {[set tiw(col_id) [.tiw.lb curselection]]==""} then {bell} else {set tiw(old_cn) [.tiw.lb get [.tiw.lb curselection]] ; set tiw(new_cn) {} ; Window show .rcw ; tkwait visibility .rcw ; wm transient .rcw .tiw ; focus .rcw.e1}} -text {Rename field}
- button $base.addbtn -borderwidth 1 -command "Window show .anfw ; set anfw(name) {} ; set anfw(type) {} ; wm transient .anfw .tiw ; focus .anfw.e1" -text "Add new field"
- label $base.l10 -borderwidth 1 -relief raised -text {field name}
- label $base.l11 -borderwidth 1 -relief raised -text {field type}
- label $base.l12 -borderwidth 1 -relief raised -text size
- label $base.lfi -borderwidth 0 -text {Field information}
- label $base.lii -borderwidth 1 -relief raised -text {Indexes defined}
- listbox $base.ilb -background #fefefe -borderwidth 1 -highlightthickness 1 -selectborderwidth 0 -selectbackground #c3c3c3
- bind $base.ilb <ButtonRelease-1> {
- tiw_show_index
- }
- label $base.lip -borderwidth 1 -relief raised -text {index properties}
- frame $base.fr11 -borderwidth 1 -height 75 -relief sunken -width 125
- label $base.fr11.l9 -borderwidth 0 -text {Is clustered ?}
- label $base.fr11.l2 -borderwidth 0 -text {Is unique ?}
- label $base.fr11.liu -anchor nw -borderwidth 0 -text Yes -textvariable tiw(isunique)
- label $base.fr11.lic -anchor nw -borderwidth 0 -text No -textvariable tiw(isclustered)
- label $base.fr11.l5 -borderwidth 0 -text {Fields :}
- label $base.fr11.lif -anchor nw -borderwidth 1 -justify left -relief sunken -text cont -textvariable tiw(indexfields) -wraplength 170
- place $base.l1 -x 20 -y 15 -anchor nw -bordermode ignore
- place $base.l2 -x 100 -y 14 -width 161 -height 18 -anchor nw -bordermode ignore
- place $base.l3 -x 20 -y 35 -anchor nw -bordermode ignore
- place $base.l4 -x 100 -y 34 -width 226 -height 18 -anchor nw -bordermode ignore
- place $base.lb -x 20 -y 91 -width 338 -height 171 -anchor nw -bordermode ignore
- place $base.renbtn -x 20 -y 263 -height 25
- place $base.addbtn -x 120 -y 263 -height 25
- place $base.sb -x 355 -y 90 -width 18 -height 173 -anchor nw -bordermode ignore
- place $base.closebtn -x 325 -y 5 -height 25 -anchor nw -bordermode ignore
- place $base.l10 -x 21 -y 75 -width 204 -height 18 -anchor nw -bordermode ignore
- place $base.l11 -x 225 -y 75 -width 90 -height 18 -anchor nw -bordermode ignore
- place $base.l12 -x 315 -y 75 -width 41 -height 18 -anchor nw -bordermode ignore
- place $base.lfi -x 20 -y 55 -anchor nw -bordermode ignore
- place $base.lii -x 20 -y 290 -width 151 -height 18 -anchor nw -bordermode ignore
- place $base.ilb -x 20 -y 306 -width 150 -height 148 -anchor nw -bordermode ignore
- place $base.lip -x 171 -y 290 -width 198 -height 18 -anchor nw -bordermode ignore
- place $base.fr11 -x 170 -y 307 -width 199 -height 147 -anchor nw -bordermode ignore
- place $base.fr11.l9 -x 10 -y 30 -anchor nw -bordermode ignore
- place $base.fr11.l2 -x 10 -y 10 -anchor nw -bordermode ignore
- place $base.fr11.liu -x 95 -y 10 -width 27 -height 16 -anchor nw -bordermode ignore
- place $base.fr11.lic -x 95 -y 30 -width 32 -height 16 -anchor nw -bordermode ignore
- place $base.fr11.l5 -x 10 -y 55 -anchor nw -bordermode ignore
- place $base.fr11.lif -x 10 -y 70 -width 178 -height 68 -anchor nw -bordermode ignore
-}
-
-proc vTclWindow.fd {base} {
- if {$base == ""} {
- set base .fd
- }
- if {[winfo exists $base]} {
- wm deiconify $base; return
- }
- toplevel $base -class Toplevel
- wm focusmodel $base passive
- wm geometry $base 377x315+103+101
- wm maxsize $base 785 570
- wm minsize $base 1 1
- wm overrideredirect $base 0
- wm resizable $base 1 1
- wm deiconify $base
- wm title $base "Form design"
- bind $base <Key-Delete> {
- fd_delete_object
- }
- canvas $base.c \
- -background #828282 -height 207 -highlightthickness 0 -relief ridge \
- -selectborderwidth 0 -width 295
- bind $base.c <Button-1> {
- fd_mouse_down %x %y
- }
- bind $base.c <ButtonRelease-1> {
- fd_mouse_up %x %y
- }
- bind $base.c <Motion> {
- fd_mouse_move %x %y
- }
- pack $base.c \
- -in .fd -anchor center -expand 1 -fill both -side top
-}
-
-proc vTclWindow.fda {base} {
- if {$base == ""} {
- set base .fda
- }
- if {[winfo exists $base]} {
- wm deiconify $base; return
- }
- toplevel $base -class Toplevel
- wm focusmodel $base passive
- wm geometry $base 225x197+561+0
- wm maxsize $base 785 570
- wm minsize $base 1 1
- wm overrideredirect $base 0
- wm resizable $base 1 1
- wm deiconify $base
- wm title $base "Attributes"
- label $base.l1 \
- -anchor nw -borderwidth 0 \
- -justify left -text Name -width 8
- entry $base.e1 \
- -background #fefefe -borderwidth 1 -highlightthickness 0 \
- -selectborderwidth 0 -textvariable fdvar(c_name)
- bind $base.e1 <Key-Return> {
- fd_set_name
- }
- label $base.l2 \
- -anchor nw -borderwidth 0 \
- -justify left -text Top -width 8
- entry $base.e2 \
- -background #fefefe -borderwidth 1 -highlightthickness 0 \
- -selectborderwidth 0 -textvariable fdvar(c_top)
- bind $base.e2 <Key-Return> {
- fd_change_coord
- }
- label $base.l3 \
- -anchor w -borderwidth 0 \
- -text Left -width 8
- entry $base.e3 \
- -background #fefefe -borderwidth 1 -highlightthickness 0 \
- -selectborderwidth 0 -textvariable fdvar(c_left)
- bind $base.e3 <Key-Return> {
- fd_change_coord
- }
- label $base.l4 \
- -anchor w -borderwidth 0 \
- -text Width \
- -width 8
- entry $base.e4 \
- -background #fefefe -borderwidth 1 -highlightthickness 0 \
- -selectborderwidth 0 -textvariable fdvar(c_width)
- bind $base.e4 <Key-Return> {
- fd_change_coord
- }
- label $base.l5 \
- -anchor w -borderwidth 0 -padx 0 -text Height -width 8
- entry $base.e5 \
- -background #fefefe -borderwidth 1 -highlightthickness 0 \
- -selectborderwidth 0 -textvariable fdvar(c_height)
- bind $base.e5 <Key-Return> {
- fd_change_coord
- }
- label $base.l6 \
- -borderwidth 0 -text Command
- entry $base.e6 \
- -background #fefefe -borderwidth 1 -highlightthickness 0 \
- -selectborderwidth 0 -textvariable fdvar(c_cmd)
- bind $base.e6 <Key-Return> {
- fd_set_command
- }
- button $base.bcmd \
- -borderwidth 1 \
- -command {Window show .fdcmd
-.fdcmd.f.txt delete 1.0 end
-.fdcmd.f.txt insert end $fdvar(c_cmd)} \
- -text ... -width 1
- label $base.l7 \
- -anchor w -borderwidth 0 \
- -text Variable -width 8
- entry $base.e7 \
- -background #fefefe -borderwidth 1 -highlightthickness 0 \
- -selectborderwidth 0 -textvariable fdvar(c_var)
- bind $base.e7 <Key-Return> {
- set fdobj($fdvar(moveitemobj),v) $fdvar(c_var)
- }
- label $base.l8 \
- -anchor w -borderwidth 0 \
- -text Text -width 8
- entry $base.e8 \
- -background #fefefe -borderwidth 1 -highlightthickness 0 \
- -selectborderwidth 0 -textvariable fdvar(c_text)
- bind $base.e8 <Key-Return> {
- fd_set_text
- }
- label $base.l0 \
- -borderwidth 1 -relief raised -text {checkbox .udf0.checkbox17} \
- -textvariable fdvar(c_info) -width 28
- grid $base.l1 \
- -in .fda -column 0 -row 1 -columnspan 1 -rowspan 1
- grid $base.e1 \
- -in .fda -column 1 -row 1 -columnspan 1 -rowspan 1 -pady 2
- grid $base.l2 \
- -in .fda -column 0 -row 2 -columnspan 1 -rowspan 1
- grid $base.e2 \
- -in .fda -column 1 -row 2 -columnspan 1 -rowspan 1
- grid $base.l3 \
- -in .fda -column 0 -row 3 -columnspan 1 -rowspan 1
- grid $base.e3 \
- -in .fda -column 1 -row 3 -columnspan 1 -rowspan 1 -pady 2
- grid $base.l4 \
- -in .fda -column 0 -row 4 -columnspan 1 -rowspan 1
- grid $base.e4 \
- -in .fda -column 1 -row 4 -columnspan 1 -rowspan 1
- grid $base.l5 \
- -in .fda -column 0 -row 5 -columnspan 1 -rowspan 1
- grid $base.e5 \
- -in .fda -column 1 -row 5 -columnspan 1 -rowspan 1 -pady 2
- grid $base.l6 \
- -in .fda -column 0 -row 6 -columnspan 1 -rowspan 1
- grid $base.e6 \
- -in .fda -column 1 -row 6 -columnspan 1 -rowspan 1
- grid $base.bcmd \
- -in .fda -column 2 -row 6 -columnspan 1 -rowspan 1
- grid $base.l7 \
- -in .fda -column 0 -row 7 -columnspan 1 -rowspan 1
- grid $base.e7 \
- -in .fda -column 1 -row 7 -columnspan 1 -rowspan 1
- grid $base.l8 \
- -in .fda -column 0 -row 8 -columnspan 1 -rowspan 1
- grid $base.e8 \
- -in .fda -column 1 -row 8 -columnspan 1 -rowspan 1 -pady 2
- grid $base.l0 \
- -in .fda -column 0 -row 0 -columnspan 2 -rowspan 1
-}
-
-proc vTclWindow.fdcmd {base} {
-global pref
- if {$base == ""} {
- set base .fdcmd
- }
- if {[winfo exists $base]} {
- wm deiconify $base; return
- }
- toplevel $base -class Toplevel
- wm focusmodel $base passive
- wm geometry $base 282x274+504+229
- wm maxsize $base 785 570
- wm minsize $base 1 19
- wm overrideredirect $base 0
- wm resizable $base 1 1
- wm title $base "Command"
- frame $base.f \
- -borderwidth 2 -height 75 -relief groove -width 125
- scrollbar $base.f.sb \
- -borderwidth 1 -command {.fdcmd.f.txt yview} -orient vert -width 12
- text $base.f.txt \
- -font $pref(font_fix) -height 1 \
- -width 115 -yscrollcommand {.fdcmd.f.sb set}
- frame $base.fb \
- -height 75 -width 125
- button $base.fb.b1 \
- -borderwidth 1 \
- -command {set fdvar(c_cmd) [.fdcmd.f.txt get 1.0 "end - 1 chars"]
-Window hide .fdcmd
-fd_set_command} \
- -text Ok -width 5
- button $base.fb.b2 \
- -borderwidth 1 -command {Window hide .fdcmd} \
- -text Cancel
- pack $base.f \
- -in .fdcmd -anchor center -expand 1 -fill both -side top
- pack $base.f.sb \
- -in .fdcmd.f -anchor e -expand 1 -fill y -side right
- pack $base.f.txt \
- -in .fdcmd.f -anchor center -expand 1 -fill both -side top
- pack $base.fb \
- -in .fdcmd -anchor center -expand 0 -fill none -side top
- pack $base.fb.b1 \
- -in .fdcmd.fb -anchor center -expand 0 -fill none -side left
- pack $base.fb.b2 \
- -in .fdcmd.fb -anchor center -expand 0 -fill none -side top
-}
-
-proc vTclWindow.fdmenu {base} {
- if {$base == ""} {
- set base .fdmenu
- }
- if {[winfo exists $base]} {
- wm deiconify $base; return
- }
- toplevel $base -class Toplevel
- wm focusmodel $base passive
- wm geometry $base 288x70+103+0
- wm maxsize $base 785 570
- wm minsize $base 1 1
- wm overrideredirect $base 0
- wm resizable $base 0 0
- wm deiconify $base
- wm title $base "Commands"
- button $base.but17 \
- -borderwidth 1 \
- -command {if {[tk_messageBox -title Warning -message "Delete all objects ?" -type yesno -default no]=="no"} return
-fd_init} \
- -text {Delete all}
- button $base.but18 \
- -borderwidth 1 -command {set fdvar(geometry) [wm geometry .fd] ; fd_test } \
- -text {Test form}
- button $base.but19 \
- -borderwidth 1 -command {destroy .$fdvar(forminame)} \
- -text {Close test form}
- button $base.bex \
- -borderwidth 1 \
- -command {if {[fd_save_form $fdvar(formname)]==1} {
-catch {Window destroy .fd}
-catch {Window destroy .fdtb}
-catch {Window destroy .fdmenu}
-catch {Window destroy .fda}
-catch {Window destroy .fdcmd}
-catch {Window destroy .$fdvar(forminame)}
-}} \
- -text Close
- button $base.bload \
- -borderwidth 1 -command {fd_load_form nimic design} \
- -text {Load from database}
- button $base.button17 \
- -borderwidth 1 -command {fd_save_form nimic} \
- -text Save
- label $base.l1 \
- -borderwidth 0 -text {Form name}
- entry $base.e1 \
- -background #fefefe -borderwidth 1 -highlightthickness 0 \
- -selectborderwidth 0 -textvariable fdvar(formname)
- label $base.l2 \
- -borderwidth 0 \
- -text {Form's window internal name}
- entry $base.e2 \
- -background #fefefe -borderwidth 1 -highlightthickness 0 \
- -selectborderwidth 0 -textvariable fdvar(forminame)
- place $base.but17 \
- -x 5 -y 80 -width 62 -height 24 -anchor nw -bordermode ignore
- place $base.but18 \
- -x 5 -y 45 -width 62 -height 24 -anchor nw -bordermode ignore
- place $base.but19 \
- -x 70 -y 45 -width 94 -height 24 -anchor nw -bordermode ignore
- place $base.bex \
- -x 230 -y 45 -height 24 -anchor nw -bordermode ignore
- place $base.bload \
- -x 75 -y 80 -width 114 -height 23 -anchor nw -bordermode ignore
- place $base.button17 \
- -x 165 -y 45 -width 44 -height 24 -anchor nw -bordermode ignore
- place $base.l1 \
- -x 5 -y 5 -anchor nw -bordermode ignore
- place $base.e1 \
- -x 75 -y 5 -width 193 -height 17 -anchor nw -bordermode ignore
- place $base.l2 \
- -x 5 -y 25 -anchor nw -bordermode ignore
- place $base.e2 \
- -x 175 -y 25 -width 60 -height 17 -anchor nw -bordermode ignore
-}
-
-proc vTclWindow.gpw {base} {
- if {$base == ""} {
- set base .gpw
- }
- if {[winfo exists $base]} {
- wm deiconify $base; return
- }
- toplevel $base -class Toplevel
- wm focusmodel $base passive
- set sw [winfo screenwidth .]
- set sh [winfo screenheight .]
- set x [expr ($sw - 297)/2]
- set y [expr ($sh - 98)/2]
- wm geometry $base 297x98+$x+$y
- 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 "Input parameter"
- label $base.l1 \
- -anchor nw -borderwidth 1 \
- -justify left -relief sunken -textvariable gpw(msg) -wraplength 200
- entry $base.e1 \
- -background #fefefe -borderwidth 1 -highlightthickness 0 \
- -textvariable gpw(var)
- bind $base.e1 <Key-KP_Enter> {
- set gpw(result) 1
-destroy .gpw
- }
- bind $base.e1 <Key-Return> {
- set gpw(result) 1
-destroy .gpw
- }
- button $base.bok \
- -borderwidth 1 -command {set gpw(result) 1
-destroy .gpw} -text Ok
- button $base.bcanc \
- -borderwidth 1 -command {set gpw(result) 0
-destroy .gpw} -text Cancel
- place $base.l1 \
- -x 10 -y 5 -width 201 -height 53 -anchor nw -bordermode ignore
- place $base.e1 \
- -x 10 -y 65 -width 200 -height 24 -anchor nw -bordermode ignore
- place $base.bok \
- -x 225 -y 5 -width 61 -height 26 -anchor nw -bordermode ignore
- place $base.bcanc \
- -x 225 -y 35 -width 61 -height 26 -anchor nw -bordermode ignore
-}
-
-proc vTclWindow.fdtb {base} {
- if {$base == ""} {
- set base .fdtb
- }
- if {[winfo exists $base]} {
- wm deiconify $base; return
- }
- toplevel $base -class Toplevel
- wm focusmodel $base passive
- wm geometry $base 90x172+0+0
- wm maxsize $base 785 570
- wm minsize $base 1 1
- wm overrideredirect $base 0
- wm resizable $base 1 1
- wm deiconify $base
- wm title $base "Toolbar"
- radiobutton $base.rb1 \
- -anchor w -borderwidth 1 \
- -highlightthickness 0 -text Point -value point -variable fdvar(tool) \
- -width 9
- radiobutton $base.rb2 \
- -anchor w -borderwidth 1 \
- -foreground #000000 -highlightthickness 0 \
- -text Label -value label -variable fdvar(tool) -width 9
- radiobutton $base.rb3 \
- -anchor w -borderwidth 1 \
- -highlightthickness 0 -text Entry -value entry -variable fdvar(tool) \
- -width 9
- radiobutton $base.rb4 \
- -anchor w -borderwidth 1 \
- -highlightthickness 0 -text Button -value button \
- -variable fdvar(tool) -width 9
- radiobutton $base.rb5 \
- -anchor w -borderwidth 1 \
- -highlightthickness 0 -text {List box} -value listbox \
- -variable fdvar(tool) -width 9
- radiobutton $base.rb6 \
- -anchor w -borderwidth 1 \
- -highlightthickness 0 -text {Check box} -value checkbox \
- -variable fdvar(tool) -width 9
- radiobutton $base.rb7 \
- -anchor w -borderwidth 1 \
- -highlightthickness 0 -text {Radio btn} -value radio \
- -variable fdvar(tool) -width 9
- radiobutton $base.rb9 \
- -anchor w -borderwidth 1 \
- -highlightthickness 0 -text {Text} -value text \
- -variable fdvar(tool) -width 9
- radiobutton $base.rb8 \
- -anchor w -borderwidth 1 \
- -highlightthickness 0 -text Query -value query -variable fdvar(tool) \
- -width 9
- grid $base.rb1 \
- -in .fdtb -column 0 -row 0 -columnspan 1 -rowspan 1
- grid $base.rb2 \
- -in .fdtb -column 0 -row 1 -columnspan 1 -rowspan 1
- grid $base.rb3 \
- -in .fdtb -column 0 -row 2 -columnspan 1 -rowspan 1
- grid $base.rb4 \
- -in .fdtb -column 0 -row 3 -columnspan 1 -rowspan 1
- grid $base.rb5 \
- -in .fdtb -column 0 -row 4 -columnspan 1 -rowspan 1
- grid $base.rb6 \
- -in .fdtb -column 0 -row 5 -columnspan 1 -rowspan 1
- grid $base.rb7 \
- -in .fdtb -column 0 -row 6 -columnspan 1 -rowspan 1
- grid $base.rb9 \
- -in .fdtb -column 0 -row 7 -columnspan 1 -rowspan 1
- grid $base.rb8 \
- -in .fdtb -column 0 -row 8 -columnspan 1 -rowspan 1
-}
-
-proc vTclWindow.sqlw {base} {
- if {$base == ""} {
- set base .sqlw
- }
- if {[winfo exists $base]} {
- wm deiconify $base; return
- }
- toplevel $base -class Toplevel
- wm focusmodel $base passive
- wm geometry $base 551x408+192+169
- wm maxsize $base 1009 738
- wm minsize $base 1 1
- wm overrideredirect $base 0
- wm resizable $base 1 1
- wm deiconify $base
- wm title $base "SQL commands"
- frame $base.f \
- -borderwidth 1 -height 392 -relief raised -width 396
- scrollbar $base.f.01 \
- -borderwidth 1 -command {.sqlw.f.t xview} -orient horiz \
- -width 10
- scrollbar $base.f.02 \
- -borderwidth 1 -command {.sqlw.f.t yview} -orient vert -width 10
- text $base.f.t \
- -borderwidth 1 \
- -height 200 -width 200 -wrap word \
- -xscrollcommand {.sqlw.f.01 set} \
- -yscrollcommand {.sqlw.f.02 set}
- button $base.b1 \
- -borderwidth 1 -command {.sqlw.f.t delete 1.0 end} -text Clean
- button $base.b2 \
- -borderwidth 1 -command {destroy .sqlw} -text Close
- grid columnconf $base 0 -weight 1
- grid columnconf $base 1 -weight 1
- grid rowconf $base 0 -weight 1
- grid $base.f \
- -in .sqlw -column 0 -row 0 -columnspan 2 -rowspan 1
- grid columnconf $base.f 0 -weight 1
- grid rowconf $base.f 0 -weight 1
- grid $base.f.01 \
- -in .sqlw.f -column 0 -row 1 -columnspan 1 -rowspan 1 -sticky ew
- grid $base.f.02 \
- -in .sqlw.f -column 1 -row 0 -columnspan 1 -rowspan 1 -sticky ns
- grid $base.f.t \
- -in .sqlw.f -column 0 -row 0 -columnspan 1 -rowspan 1 \
- -sticky nesw
- grid $base.b1 \
- -in .sqlw -column 0 -row 1 -columnspan 1 -rowspan 1
- grid $base.b2 \
- -in .sqlw -column 1 -row 1 -columnspan 1 -rowspan 1
-}
-
-proc vTclWindow.rcw {base} {
- if {$base == ""} {
- set base .rcw
- }
- if {[winfo exists $base]} {
- wm deiconify $base; return
- }
- toplevel $base -class Toplevel
- wm focusmodel $base passive
- wm geometry $base 215x75+258+213
- wm maxsize $base 1009 738
- wm minsize $base 1 1
- wm overrideredirect $base 0
- wm resizable $base 0 0
- wm deiconify $base
- wm title $base "Rename field"
- label $base.l1 \
- -borderwidth 0 -text {New name}
- entry $base.e1 \
- -background #fefefe -borderwidth 1 -textvariable tiw(new_cn)
- bind $base.e1 <Key-KP_Enter> "rename_column"
- bind $base.e1 <Key-Return> "rename_column"
- frame $base.f \
- -height 75 -relief groove -width 147
- button $base.f.b1 \
- -borderwidth 1 -command rename_column -text Rename
- button $base.f.b2 \
- -borderwidth 1 -command {Window destroy .rcw} -text Cancel
- label $base.l2 -borderwidth 0
- grid $base.l1 \
- -in .rcw -column 0 -row 0 -columnspan 1 -rowspan 1
- grid $base.e1 \
- -in .rcw -column 1 -row 0 -columnspan 1 -rowspan 1
- grid $base.f \
- -in .rcw -column 0 -row 4 -columnspan 2 -rowspan 1
- grid $base.f.b1 \
- -in .rcw.f -column 0 -row 0 -columnspan 1 -rowspan 1
- grid $base.f.b2 \
- -in .rcw.f -column 1 -row 0 -columnspan 1 -rowspan 1
- grid $base.l2 \
- -in .rcw -column 0 -row 3 -columnspan 1 -rowspan 1
-}
-
-proc vTclWindow.anfw {base} {
- if {$base == ""} {
- set base .anfw
- }
- if {[winfo exists $base]} {
- wm deiconify $base; return
- }
- toplevel $base -class Toplevel
- wm focusmodel $base passive
- wm geometry $base 302x114+195+175
- wm maxsize $base 1009 738
- wm minsize $base 1 1
- wm overrideredirect $base 0
- wm resizable $base 0 0
- wm deiconify $base
- wm title $base "Add new field"
- label $base.l1 \
- -borderwidth 0 \
- -text {Field name}
- entry $base.e1 \
- -background #fefefe -borderwidth 1 -textvariable anfw(name)
- bind $base.e1 <Key-KP_Enter> {
- focus .anfw.e2
- }
- bind $base.e1 <Key-Return> {
- focus .anfw.e2
- }
- label $base.l2 \
- -borderwidth 0 \
- -text {Field type}
- entry $base.e2 \
- -background #fefefe -borderwidth 1 -textvariable anfw(type)
- bind $base.e2 <Key-KP_Enter> {
- anfw:add
- }
- bind $base.e2 <Key-Return> {
- anfw:add
- }
- button $base.b1 \
- -borderwidth 1 -command anfw:add -text {Add field}
- button $base.b2 \
- -borderwidth 1 -command {Window destroy .anfw} -text Cancel
- place $base.l1 \
- -x 25 -y 10 -anchor nw -bordermode ignore
- place $base.e1 \
- -x 98 -y 7 -width 178 -height 22 -anchor nw -bordermode ignore
- place $base.l2 \
- -x 25 -y 40 -anchor nw -bordermode ignore
- place $base.e2 \
- -x 98 -y 37 -width 178 -height 22 -anchor nw -bordermode ignore
- place $base.b1 \
- -x 70 -y 75 -anchor nw -bordermode ignore
- place $base.b2 \
- -x 160 -y 75 -anchor nw -bordermode ignore
-}
-
-proc vTclWindow.uw {base} {
- if {$base == ""} {
- set base .uw
- }
- if {[winfo exists $base]} {
- wm deiconify $base; return
- }
- toplevel $base -class Toplevel
- wm focusmodel $base passive
- wm geometry $base 263x220+233+165
- wm maxsize $base 1009 738
- wm minsize $base 1 1
- wm overrideredirect $base 0
- wm resizable $base 0 0
- wm deiconify $base
- wm title $base "Define new user"
- label $base.l1 \
- -borderwidth 0 -anchor w -text "User name"
- entry $base.e1 \
- -background #fefefe -borderwidth 1 -textvariable uw(username)
- bind $base.e1 <Key-Return> "focus .uw.e2"
- bind $base.e1 <Key-KP_Enter> "focus .uw.e2"
- label $base.l2 \
- -borderwidth 0 -text Password
- entry $base.e2 \
- -background #fefefe -borderwidth 1 -show * -textvariable uw(password)
- bind $base.e2 <Key-Return> "focus .uw.e3"
- bind $base.e2 <Key-KP_Enter> "focus .uw.e3"
- label $base.l3 \
- -borderwidth 0 -text {verify password}
- entry $base.e3 \
- -background #fefefe -borderwidth 1 -show * -textvariable uw(verify)
- bind $base.e3 <Key-Return> "focus .uw.cb1"
- bind $base.e3 <Key-KP_Enter> "focus .uw.cb1"
- checkbutton $base.cb1 \
- -borderwidth 1 -offvalue NOCREATEDB -onvalue CREATEDB \
- -text {Alow user to create databases } -variable uw(createdb)
- checkbutton $base.cb2 \
- -borderwidth 1 -offvalue NOCREATEUSER -onvalue CREATEUSER \
- -text {Allow users to create other users} -variable uw(createuser)
- label $base.l4 \
- -borderwidth 0 -anchor w -text {Valid until (date)}
- entry $base.e4 \
- -background #fefefe -borderwidth 1 -textvariable uw(valid)
- bind $base.e4 <Key-Return> "focus .uw.b1"
- bind $base.e4 <Key-KP_Enter> "focus .uw.b1"
- button $base.b1 \
- -borderwidth 1 -command uw:create_user -text Create
- button $base.b2 \
- -borderwidth 1 -command {Window destroy .uw} -text Cancel
- place $base.l1 \
- -x 5 -y 7 -width 62 -height 16 -anchor nw -bordermode ignore
- place $base.e1 \
- -x 109 -y 5 -width 146 -height 20 -anchor nw -bordermode ignore
- place $base.l2 \
- -x 5 -y 35 -anchor nw -bordermode ignore
- place $base.e2 \
- -x 109 -y 32 -width 146 -height 20 -anchor nw -bordermode ignore
- place $base.l3 \
- -x 5 -y 60 -anchor nw -bordermode ignore
- place $base.e3 \
- -x 109 -y 58 -width 146 -height 20 -anchor nw -bordermode ignore
- place $base.cb1 \
- -x 5 -y 90 -anchor nw -bordermode ignore
- place $base.cb2 \
- -x 5 -y 115 -anchor nw -bordermode ignore
- place $base.l4 \
- -x 5 -y 145 -width 100 -height 16 -anchor nw -bordermode ignore
- place $base.e4 \
- -x 110 -y 143 -width 146 -height 20 -anchor nw -bordermode ignore
- place $base.b1 \
- -x 45 -y 185 -anchor nw -width 70 -height 25 -bordermode ignore
- place $base.b2 \
- -x 140 -y 185 -anchor nw -width 70 -height 25 -bordermode ignore
-}
-
-Window show .
-Window show .dw
-
-main $argc $argv