Source code for the Tcl/Tk Rolodex. This application assumes that spynergy.tcl is in the launch directory.




#----------------------------------------------------------------------
# rolodex.tcl -- The Tcl Personal Information Database Manager
#  by Mike Doyle
#
#  Copyright (c) 1997 Eolas Technologies Inc.
#  Freely modifiable/redistributable under the "Standard Tcl License"
#  See http://www.eolas.com/tcl/license.txt for details

proc db_open {} {
global db dir result
	if {[info exists db]} {dbClose db}
	    if {![file exist $dir/rolodex.idx]} {
	        dbCreate $dir db rolodex "NAME STREET CITY STATE ZIP PHONE FAX CELL COMPANY C_STREET C_CITY C_STATE C_ZIP C_PHONE C_FAX  C_CELL EMAIL PERSONALWEB WORKWEB PAGER PGPFINGERPRINT PGPKEY NOTES"
	   } 

	 dbOpen $dir db

#dbCleanup db
  
}

proc db_display_record {} {
global db person_name
	
	.rolodex.form.personal.name.entry delete 0 end
	.rolodex.form.personal.name.entry insert end $db(rolodex,NAME)
	.rolodex.form.personal.street.entry delete 0 end
	.rolodex.form.personal.street.entry insert end $db(rolodex,STREET)
	.rolodex.form.personal.citystate.city delete 0 end
	.rolodex.form.personal.citystate.city insert end $db(rolodex,CITY)
	.rolodex.form.personal.citystate.state delete 0 end
	.rolodex.form.personal.citystate.state insert end $db(rolodex,STATE)
	.rolodex.form.personal.citystate.zip delete 0 end
	.rolodex.form.personal.citystate.zip insert end $db(rolodex,ZIP)
	.rolodex.form.personal.phonefax.phone delete 0 end
	.rolodex.form.personal.phonefax.phone insert end $db(rolodex,PHONE)
	.rolodex.form.personal.phonefax.fax  delete 0 end
	.rolodex.form.personal.phonefax.fax insert end $db(rolodex,FAX)
	.rolodex.form.personal.phonefax.cellular delete 0 end
	.rolodex.form.personal.phonefax.cellular insert end $db(rolodex,CELL)
	.rolodex.form.work.name.entry delete 0 end
	.rolodex.form.work.name.entry insert end $db(rolodex,COMPANY)
	.rolodex.form.work.street.entry delete 0 end
	.rolodex.form.work.street.entry insert end $db(rolodex,C_STREET)
	.rolodex.form.work.citystate.city delete 0 end
	.rolodex.form.work.citystate.city insert end $db(rolodex,C_CITY)
	.rolodex.form.work.citystate.state delete 0 end
	.rolodex.form.work.citystate.state insert end $db(rolodex,C_STATE)
	.rolodex.form.work.citystate.zip delete 0 end
	.rolodex.form.work.citystate.zip insert end $db(rolodex,C_ZIP)
	.rolodex.form.work.phonefax.phone delete 0 end
	.rolodex.form.work.phonefax.phone insert end $db(rolodex,C_PHONE)
	.rolodex.form.work.phonefax.fax delete 0 end
	.rolodex.form.work.phonefax.fax insert end $db(rolodex,C_FAX)
	.rolodex.form.work.phonefax.cellular delete 0 end
	.rolodex.form.work.phonefax.cellular insert end $db(rolodex,C_CELL)
	.rolodex.form.internet.email.entry delete 0 end
	.rolodex.form.internet.email.entry insert end $db(rolodex,EMAIL)
	.rolodex.form.internet.personal_web.url delete 0 end
	.rolodex.form.internet.personal_web.url insert end $db(rolodex,PERSONALWEB)
	.rolodex.form.internet.work_web.url delete 0 end
	.rolodex.form.internet.work_web.url insert end $db(rolodex,WORKWEB)
	.rolodex.form.internet.pagerpgp.pager delete 0 end
	.rolodex.form.internet.pagerpgp.pager insert end $db(rolodex,PAGER)
	.rolodex.form.internet.pagerpgp.pgp delete 0 end
	.rolodex.form.internet.pagerpgp.pgp insert end $db(rolodex,PGPFINGERPRINT)
	.rolodex.form.notes.misc.data delete 1.0 end
	.rolodex.form.notes.misc.data insert end $db(rolodex,PGPKEY)
	.rolodex.form.notes.text delete 1.0 end
	.rolodex.form.notes.text insert end $db(rolodex,NOTES)
	
	.rolodex.form.spacer0.data configure -text [.rolodex.form.personal.name.entry get]



}

proc db_capture_record {} {
global db

	set db(rolodex,NAME) [.rolodex.form.personal.name.entry get]
	set db(rolodex,STREET) [.rolodex.form.personal.street.entry get]
	set db(rolodex,CITY) [.rolodex.form.personal.citystate.city get]
	set db(rolodex,STATE) [.rolodex.form.personal.citystate.state get]
	set db(rolodex,ZIP) [.rolodex.form.personal.citystate.zip get]
	set db(rolodex,PHONE) [.rolodex.form.personal.phonefax.phone get]
	set db(rolodex,FAX) [.rolodex.form.personal.phonefax.fax get]
	set db(rolodex,CELL) [.rolodex.form.personal.phonefax.cellular get]
	set db(rolodex,COMPANY) [.rolodex.form.work.name.entry get]
	set db(rolodex,C_STREET) [.rolodex.form.work.street.entry get]
	set db(rolodex,C_CITY) [.rolodex.form.work.citystate.city get]
	set db(rolodex,C_STATE) [.rolodex.form.work.citystate.state get]
	set db(rolodex,C_ZIP) [.rolodex.form.work.citystate.zip get]
	set db(rolodex,C_PHONE) [.rolodex.form.work.phonefax.phone get]
	set db(rolodex,C_FAX) [.rolodex.form.work.phonefax.fax get]
	set db(rolodex,C_CELL) [.rolodex.form.work.phonefax.cellular get]
	set db(rolodex,EMAIL) [.rolodex.form.internet.email.entry get]
	set db(rolodex,PERSONALWEB) [.rolodex.form.internet.personal_web.url get]
	set db(rolodex,WORKWEB) [.rolodex.form.internet.work_web.url get]
	set db(rolodex,PAGER) [.rolodex.form.internet.pagerpgp.pager get]
	set db(rolodex,PGPFINGERPRINT) [.rolodex.form.internet.pagerpgp.pgp get]
	set db(rolodex,PGPKEY) [.rolodex.form.notes.misc.data get 1.0 end]
	set db(rolodex,NOTES) [.rolodex.form.notes.text get 1.0 end]

}

proc db_clear_form {} {

	.rolodex.form.personal.name.entry delete 0 end
	.rolodex.form.personal.street.entry delete 0 end
	.rolodex.form.personal.citystate.city delete 0 end
	.rolodex.form.personal.citystate.state delete 0 end
	.rolodex.form.personal.citystate.zip delete 0 end
	.rolodex.form.personal.phonefax.phone delete 0 end
	.rolodex.form.personal.phonefax.fax  delete 0 end
	.rolodex.form.personal.phonefax.cellular delete 0 end
	.rolodex.form.work.name.entry delete 0 end
	.rolodex.form.work.street.entry delete 0 end
	.rolodex.form.work.citystate.city delete 0 end
	.rolodex.form.work.citystate.state delete 0 end
	.rolodex.form.work.citystate.zip delete 0 end
	.rolodex.form.work.phonefax.phone delete 0 end
	.rolodex.form.work.phonefax.fax delete 0 end
	.rolodex.form.work.phonefax.cellular delete 0 end
	.rolodex.form.internet.email.entry delete 0 end
	.rolodex.form.internet.personal_web.url delete 0 end
	.rolodex.form.internet.work_web.url delete 0 end
	.rolodex.form.internet.pagerpgp.pager delete 0 end
	.rolodex.form.internet.pagerpgp.pgp delete 0 end
	.rolodex.form.notes.misc.data delete 1.0 end
	.rolodex.form.notes.text delete 1.0 end
	.rolodex.form.spacer0.data configure -text ""

}

proc db_sort {} {

global db dir result
set first 1	
	    if {![file exist $dir/sorted.idx]} {
	        dbCreate $dir db sorted "NAME STREET CITY STATE ZIP PHONE FAX CELL COMPANY C_STREET C_CITY C_STATE C_ZIP C_PHONE C_FAX  C_CELL EMAIL PERSONALWEB WORKWEB PAGER PGPFINGERPRINT PGPKEY NOTES"
	   } 

	foreach seqno [dbuSort db rolodex NAME] {

		dbGetRow db sorted $first
		dbGetRow db rolodex $seqno
		set db(sorted,NAME)  $db(rolodex,NAME) 
		set db(sorted,STREET) $db(rolodex,STREET) 
		set db(sorted,CITY) $db(rolodex,CITY) 
		set db(sorted,STATE) $db(rolodex,STATE) 
		set db(sorted,ZIP) $db(rolodex,ZIP) 
		set db(sorted,PHONE) $db(rolodex,PHONE) 
		set db(sorted,FAX) $db(rolodex,FAX) 
		set db(sorted,CELL) $db(rolodex,CELL) 
		set db(sorted,COMPANY) $db(rolodex,COMPANY) 
		set db(sorted,C_STREET) $db(rolodex,C_STREET) 
		set db(sorted,C_CITY) $db(rolodex,C_CITY) 
		set db(sorted,C_STATE) $db(rolodex,C_STATE) 
		set db(sorted,C_ZIP) $db(rolodex,C_ZIP) 
		set db(sorted,C_PHONE) $db(rolodex,C_PHONE) 
		set db(sorted,C_FAX) $db(rolodex,C_FAX) 
		set db(sorted,C_CELL) $db(rolodex,C_CELL) 
		set db(sorted,EMAIL) $db(rolodex,EMAIL) 
		set db(sorted,PERSONALWEB) $db(rolodex,PERSONALWEB) 
		set db(sorted,WORKWEB) $db(rolodex,WORKWEB) 
		set db(sorted,PAGER) $db(rolodex,PAGER) 
		set db(sorted,PGPFINGERPRINT) $db(rolodex,PGPFINGERPRINT) 
		set db(sorted,PGPKEY) $db(rolodex,PGPKEY) 
		set db(sorted,NOTES) $db(rolodex,NOTES) 

		dbPutRow db sorted
		incr first
		}

	dbClose db
	file copy rolodex.idx rolobak.idx
	file copy rolodex.tbl rolobak.tbl
	file copy sorted.idx rolodex.idx
	file copy sorted.tbl rolodex.tbl
	file del sorted.idx
	file del sorted.tbl
	
	db_open
	set seqno 1
	dbGetRow db rolodex $seqno
	db_display_record
}

proc db_add_record {} {
global db
	dbNewRow db rolodex
	db_capture_record
	set result [dbPutRow db rolodex]

}

proc db_get_name {} {
global db current_type

if {$current_type == "internet"} {set type EMAIL; set field "internet.email.entry"} elseif {$current_type == "work"}  \
{set type COMPANY;  set field "work.name.entry"}   else {set type NAME; set field "personal.name.entry"}
	
	set seqlist [dbuSearchString db rolodex $type [.rolodex.form.$field get]] 
	set seqno [lindex $seqlist 0]
	dbGetRow db rolodex $seqno
	db_display_record

}

#########################################
#  Start GUI definition
#
source spynergy.tcl
global db dir result seqno current_type person_name
set result 0
set seqno 0
set dir [pwd]   
set person_name ""

bind Entry  {tkEntryBackspace %W}

set Parent .rolodex
frame $Parent -background gray40
set Name $Parent.buttons
frame $Name -background gray40
pack $Name

set Name $Parent.buttons.first
button $Name     -activebackground  gray80 \
    -activeforeground black \
    -background gray40 \
    -command {
	set seqno 1
	dbGetRow db rolodex $seqno
	db_display_record
	} \
    -disabledforeground LightGray \
    -foreground White \
    -highlightbackground LightGray \
    -highlightcolor LightGray \
    -padx 5 \
    -pady 1 \
    -text "<<"
pack $Name     -anchor nw \
    -fill none \
    -side left

set Name $Parent.buttons.back
button $Name     -activebackground  gray80 \
    -activeforeground black \
    -background gray40 \
    -command {
	set row [dbPrevRow db rolodex]
	if {$row} {set seqno $row}
	if {$row} {
		dbGetRow db rolodex $seqno
		db_display_record
		}
	} \
    -disabledforeground LightGray \
    -foreground White \
    -highlightbackground LightGray \
    -highlightcolor LightGray \
    -padx 5 \
    -pady 1 \
    -text "<"
pack $Name     -anchor nw \
    -fill none \
    -side left

set Name $Parent.buttons.forward
button $Name     -activebackground  gray80 \
    -activeforeground black \
    -background gray40 \
    -command {
	set row [dbNextRow db rolodex]
	if {$row} {set seqno $row}
	if { $row} {
		dbGetRow db rolodex $seqno
		db_display_record
		}
	} \
    -disabledforeground LightGray \
    -foreground White \
    -highlightbackground LightGray \
    -highlightcolor LightGray \
    -padx 5 \
    -pady 1 \
    -text ">"
pack $Name     -anchor nw \
    -fill none \
    -side left

set Name $Parent.buttons.last
button $Name     -activebackground  gray80 \
    -activeforeground black \
    -background gray40 \
    -command {set seqno [dbLastRow db rolodex]; db_display_record} \
    -disabledforeground LightGray \
    -foreground White \
    -highlightbackground LightGray \
    -highlightcolor LightGray \
    -padx 5 \
    -pady 1 \
    -text ">>"
pack $Name     -anchor nw \
    -fill none \
    -side left

set Name $Parent.buttons.sort
button $Name     -activebackground  gray80 \
    -activeforeground black \
    -background gray40 \
    -command "db_sort" \
    -disabledforeground LightGray \
    -foreground White \
    -highlightbackground LightGray \
    -highlightcolor LightGray \
    -padx 5 \
    -pady 1 \
    -text "Sort"
pack $Name     -anchor nw \
    -fill none \
    -side left

set Name $Parent.buttons.spacer
label $Name -text " " -background gray40
pack $Name -anchor nw -side left

set Name $Parent.buttons.new_record
button $Name     -activebackground  gray80 \
    -activeforeground black \
    -background gray40 \
    -command {
	$Parent.datatype.personal invoke
	db_clear_form
	pack forget $Parent.buttons.new_record
	pack $Parent.buttons.new_record_done -fill none -side left -before $Parent.buttons.get_name
} \
    -disabledforeground LightGray \
    -foreground White \
    -highlightbackground LightGray \
    -highlightcolor LightGray \
    -padx 5 \
    -pady 1 \
    -text "New Record"
pack $Name     -anchor nw \
    -fill none \
    -side left

set Name $Parent.buttons.new_record_done
button $Name     -activebackground  gray80 \
    -activeforeground black \
    -background gray60 -relief groove -border 1\
    -command {
	db_add_record; 
	db_clear_form; 
	pack forget $Parent.buttons.new_record_done
	pack $Parent.buttons.new_record -fill none -side left -before $Parent.buttons.get_name
	after 1000 db_display_record
	} \
    -disabledforeground LightGray \
    -foreground Black \
    -highlightbackground LightGray \
    -highlightcolor LightGray \
    -padx 5 \
    -pady 1 \
    -text "      Done      "

set Name $Parent.buttons.get_name
button $Name     -activebackground  gray80 \
    -activeforeground black \
    -background gray40 \
    -command "db_get_name" \
    -disabledforeground LightGray \
    -foreground White \
    -highlightbackground LightGray \
    -highlightcolor LightGray \
    -padx 5 \
    -pady 1 \
    -text "Search Name"
pack $Name     -anchor nw \
    -fill none \
    -side left

set Name $Parent.buttons.modify_record
button $Name     -activebackground  gray80 \
    -activeforeground black \
    -background gray40 \
    -command {
	db_capture_record
	dbPutRow db rolodex
	db_clear_form
	after 1000 db_display_record
	} \
    -disabledforeground LightGray \
    -foreground White \
    -highlightbackground LightGray \
    -highlightcolor LightGray \
    -padx 5 \
    -pady 1 \
    -text "Modify Record"
pack $Name     -anchor nw \
    -fill none \
    -side left

set Name $Parent.buttons.delete_record
button $Name     -activebackground  gray80 \
    -activeforeground black \
    -background gray40 \
    -command {

	if {$seqno} {

		dbDelRow db rolodex $seqno
		db_clear_form
		.rolodex.form.spacer0.data configure -text ""
		} 
	} \
    -disabledforeground LightGray \
    -foreground White \
    -highlightbackground LightGray \
    -highlightcolor LightGray \
    -padx 5 \
    -pady 1 \
    -text "Delete Record"
pack $Name     -anchor nw \
    -fill none \
    -side left

set Name $Parent.buttons.spacer2
label $Name -text "       " -background gray40
pack $Name -anchor nw -side left

set Name $Parent.buttons.exit
button $Name     -activebackground  gray80 \
    -activeforeground black \
    -background gray40 \
    -command {dbClose db; exit} \
    -disabledforeground LightGray \
    -foreground White \
    -highlightbackground LightGray \
    -highlightcolor LightGray \
    -padx 5 \
    -pady 1 \
    -text "Exit"
pack $Name     -anchor nw \
    -fill none \
    -side right

#############################################
# Data Type Buttons
#

set Name $Parent.datatype
frame $Name 
pack $Name -expand 1 -fill x

set Name $Parent.datatype.personal
button $Name     -activebackground  white \
    -activeforeground black \
    -background white -relief flat \
    -command {
	$Parent.datatype.$current_type configure -background gray40 -relief sunken -foreground white
	$Parent.datatype.personal configure -background white -relief flat -foreground black
	pack forget $Parent.form.$current_type
	pack $Parent.form.personal  -anchor nw -expand 1 -fill x -before $Parent.form.notes
	set current_type personal	

	} \
    -disabledforeground LightGray \
    -foreground black \
    -highlightbackground LightGray \
    -highlightcolor LightGray \
    -pady 1 \
    -text "Personal"
pack $Name   -expand 1  -anchor nw  -fill x  -side left

set Name $Parent.datatype.work
button $Name     -activebackground  white \
    -activeforeground black \
    -background gray40  -relief sunken \
    -command {
	$Parent.datatype.$current_type configure -background gray40 -relief sunken -foreground white
	$Parent.datatype.work configure -background white -relief flat -foreground black
	pack forget $Parent.form.$current_type
	pack $Parent.form.work  -anchor nw -expand 1 -fill x -before $Parent.form.notes	
	set current_type work

	} \
    -disabledforeground LightGray \
    -foreground White \
    -highlightbackground LightGray \
    -highlightcolor LightGray \
    -pady 1 \
    -text "Work"
pack $Name   -expand 1  -anchor nw  -fill x  -side left

set Name $Parent.datatype.internet
button $Name     -activebackground  white \
    -activeforeground black \
    -background gray40 -relief sunken \
    -command {
	$Parent.datatype.$current_type configure -background gray40 -relief sunken -foreground white
	$Parent.datatype.internet configure -background white -relief flat -foreground black
	pack forget $Parent.form.$current_type
	pack $Parent.form.internet  -anchor nw -expand 1 -fill x -before $Parent.form.notes	
	set current_type internet

	} \
    -disabledforeground LightGray \
    -foreground White \
    -highlightbackground LightGray \
    -highlightcolor LightGray \
    -pady 1 \
    -text "Internet"
pack $Name   -expand 1  -anchor nw  -fill x  -side left

set Name $Parent.form
frame $Name -height 600 -background white
pack $Name -anchor nw -expand 1 -fill both
frame $Parent.form.spacer0  -background white -relief flat -border 0
pack $Parent.form.spacer0 -expand 1 -fill x
label $Parent.form.spacer0.name -text "Data Record for:" -background white -foreground black
pack $Parent.form.spacer0.name -side left -anchor w
label $Parent.form.spacer0.data -text  " " -background white -foreground black
pack $Parent.form.spacer0.data -side left -anchor w
frame $Parent.form.spacer1 -height 2 -background gray40
pack $Parent.form.spacer1 -expand 1 -fill x

###############################################
#  Personal data area
#
set Form $Parent.form.personal
set Name $Form
frame $Name -background white -borderwidth 2 -relief groove -height 300
pack $Name -anchor nw -expand 1 -fill x

set Name $Form.name
frame $Name -background white 
pack $Name -anchor nw -expand 1 -fill x -side top

set Name $Form.name.label
label $Name -text "Name:  " -background white
pack $Name -anchor nw -side left -pady 2

set Name $Form.name.entry
entry $Name -width 91 -background lightgray -borderwidth 3
pack $Name -anchor nw -side left -pady 2

set Name $Form.street
frame $Name -background white 
pack $Name -anchor nw -expand 1 -fill x -side top

set Name $Form.street.label
label $Name -text "Street:  " -background white
pack $Name -anchor nw -side left -pady 2

set Name $Form.street.entry
entry $Name -width 91 -background lightgray -borderwidth 3
pack $Name -anchor nw -side left -pady 2

set Name $Form.citystate
frame $Name -background white 
pack $Name -anchor nw -expand 1 -fill x -side top

set Name $Form.citystate.city_l
label $Name -text "City:     " -background white
pack $Name -anchor nw -side left -pady 2

set Name $Form.citystate.city
entry $Name -width 50 -background lightgray -borderwidth 3
pack $Name -anchor nw -side left -pady 2

set Name $Form.citystate.state_l
label $Name -text "State:  " -background white
pack $Name -anchor nw -side left -pady 2

set Name $Form.citystate.state
entry $Name -width 5 -background lightgray -borderwidth 3
pack $Name -anchor nw -side left -pady 2

set Name $Form.citystate.zip_l
label $Name -text "  Zip:  " -background white
pack $Name -anchor nw -side left -pady 2

set Name $Form.citystate.zip
entry $Name -width 21 -background lightgray -borderwidth 3
pack $Name -anchor nw -side left -pady 2

set Name $Form.phonefax
frame $Name  -background white 
pack $Name -anchor nw -expand 1 -fill x -side top

set Name $Form.phonefax.phone_l
label $Name -text "Phone: " -background white
pack $Name -anchor nw -side left -pady 2

set Name $Form.phonefax.phone
entry $Name -width 24 -background lightgray -borderwidth 3
pack $Name -anchor nw -side left -pady 2

set Name $Form.phonefax.fax_l
label $Name -text "  Fax:  " -background white
pack $Name -anchor nw -side left -pady 2

set Name $Form.phonefax.fax
entry $Name -width 24 -background lightgray -borderwidth 3
pack $Name -anchor nw -side left -pady 2

set Name $Form.phonefax.cellular_l
label $Name -text "  Cellular:  " -background white
pack $Name -anchor nw -side left -pady 2

set Name $Form.phonefax.cellular
entry $Name -width 25 -background lightgray -borderwidth 3
pack $Name -anchor nw -side left -pady 2


########################
#  Work data area
#

set Form $Parent.form.work
set Name $Form
frame $Name -background white -borderwidth 2 -relief groove
#pack $Name -anchor nw -expand 1 -fill x

set Name $Form.name
frame $Name -background white 
pack $Name -anchor nw -expand 1 -fill x -side top

set Name $Form.name.label
label $Name -text "Company: " -background white
pack $Name -anchor nw -side left -pady 2

set Name $Form.name.entry
entry $Name -width 89 -background lightgray -borderwidth 3
pack $Name -anchor nw -side left -pady 2

set Name $Form.street
frame $Name -background white 
pack $Name -anchor nw -expand 1 -fill x -side top

set Name $Form.street.label
label $Name -text "Street:      " -background white
pack $Name -anchor nw -side left -pady 2

set Name $Form.street.entry
entry $Name -width 89 -background lightgray -borderwidth 3
pack $Name -anchor nw -side left -pady 2

set Name $Form.citystate
frame $Name -background white 
pack $Name -anchor nw -expand 1 -fill x -side top

set Name $Form.citystate.city_l
label $Name -text "City:          " -background white
pack $Name -anchor nw -side left -pady 2

set Name $Form.citystate.city
entry $Name -width 50 -background lightgray -borderwidth 3
pack $Name -anchor nw -side left -pady 2

set Name $Form.citystate.state_l
label $Name -text "State:  " -background white
pack $Name -anchor nw -side left -pady 2

set Name $Form.citystate.state
entry $Name -width 5 -background lightgray -borderwidth 3
pack $Name -anchor nw -side left -pady 2

set Name $Form.citystate.zip_l
label $Name -text " Zip:  " -background white
pack $Name -anchor nw -side left -pady 2

set Name $Form.citystate.zip
entry $Name -width 19 -background lightgray -borderwidth 3
pack $Name -anchor nw -side left -pady 2

set Name $Form.phonefax
frame $Name  -background white 
pack $Name -anchor nw -expand 1 -fill x -side top

set Name $Form.phonefax.phone_l
label $Name -text "Phone:     " -background white
pack $Name -anchor nw -side left -pady 2

set Name $Form.phonefax.phone
entry $Name -width 24 -background lightgray -borderwidth 3
pack $Name -anchor nw -side left -pady 2

set Name $Form.phonefax.fax_l
label $Name -text "  Fax:  " -background white
pack $Name -anchor nw -side left -pady 2

set Name $Form.phonefax.fax
entry $Name -width 24 -background lightgray -borderwidth 3
pack $Name -anchor nw -side left -pady 2

set Name $Form.phonefax.cellular_l
label $Name -text "  Cellular:  " -background white
pack $Name -anchor nw -side left -pady 2

set Name $Form.phonefax.cellular
entry $Name -width 23 -background lightgray -borderwidth 3
pack $Name -anchor nw -side left -pady 2


########################
#  Internet data area
#

set Form $Parent.form.internet
set Name $Form
frame $Name -background white -borderwidth 2 -relief groove
#pack $Name -anchor nw -expand 1 -fill x

set Name $Form.email
frame $Name -background white 
pack $Name -anchor nw -expand 1 -fill x -side top

set Name $Form.email.label
label $Name -text "Email:   " -background white
pack $Name -anchor nw -side left -pady 2

set Name $Form.email.entry
entry $Name -width 91 -background lightgray -borderwidth 3
pack $Name -anchor nw -side left -pady 2

set Name $Form.personal_web
frame $Name -background white 
pack $Name -anchor nw -expand 1 -fill x -side top

set Name $Form.personal_web.label
label $Name -text "Personal Web Site:    " -background white
pack $Name -anchor nw -side left -pady 2

set Name $Form.personal_web.url
entry $Name -width 80 -background lightgray -borderwidth 3
pack $Name -anchor nw -side left -pady 2

set Name $Form.work_web
frame $Name -background white 
pack $Name -anchor nw -expand 1 -fill x -side top

set Name $Form.work_web.label
label $Name -text "Work Web Site:         " -background white
pack $Name -anchor nw -side left -pady 2

set Name $Form.work_web.url
entry $Name -width 80 -background lightgray -borderwidth 3
pack $Name -anchor nw -side left -pady 2

set Name $Form.pagerpgp
frame $Name  -background white 
pack $Name -anchor nw -expand 1 -fill x -side top

set Name $Form.pagerpgp.pager_l
label $Name -text "Pager:  " -background white
pack $Name -anchor nw -side left -pady 2

set Name $Form.pagerpgp.pager
entry $Name -width 24 -background lightgray -borderwidth 3
pack $Name -anchor nw -side left -pady 2

set Name $Form.pagerpgp.pgp_l
label $Name -text "   PGP Fingerprint: " -background white
pack $Name -anchor nw -side left -pady 2

set Name $Form.pagerpgp.pgp
entry $Name -width 50 -background lightgray -borderwidth 3
pack $Name -anchor nw -side left -pady 2


###########################################
# Notes Area
#

set Form $Parent.form.notes
set Name $Form
frame $Name -background white -borderwidth 2 -relief groove
pack $Name -anchor nw -expand 1 -fill x

set Name $Form.misc
frame $Name  -background white 
pack $Name -anchor nw -expand 1 -fill x -side top

set Name $Form.misc.scroll
scrollbar $Name -command {$Form.misc.data yview} -orient vertical
pack $Name -side right -padx 4 -pady 2 -expand 1 -fill y

set Name $Form.misc.data_l
label $Name -text "  Misc data:" -background white 
pack $Name -anchor nw -side left -pady 2

set Name $Form.misc.data
text $Name -width 80 -background gray90 -borderwidth 3 -height 4 -width 84 \
	-yscrollcommand {.rolodex.form.notes.misc.scroll set}
pack $Name -anchor nw -side left -pady 2


set Name $Form.scroll
scrollbar $Name -command {$Form.text yview} -orient vertical
pack $Name -side right -padx 4 -pady 2 -expand 1 -fill y

set Name $Form.text_l
label $Name -text "   Notes:   " -background white
pack $Name -anchor nw -side left -pady 2

set Name $Form.text
text $Name -width 45 -background gray90 -borderwidth 3 -height 10 -width 85 \
	-yscrollcommand {$Form.scroll set}
pack $Name -anchor nw -side left -pady 2
########################
# Put it up
#

set current_type personal
pack $Parent

db_open