diff -bBc sdr/src/bitmaps.c src/bitmaps.c *** sdr/src/bitmaps.c.orig Sun Sep 6 08:41:02 1998 --- sdr/src/bitmaps.c Tue Apr 13 15:27:37 1999 *************** *** 63,68 **** --- 63,69 ---- #include "image_smeeting.xbm" #include "image_stest.xbm" #include "image_sdr.xbm" + #include "image_directory.xbm" void init_bitmaps() { *************** *** 95,98 **** --- 96,100 ---- Tk_DefineBitmap(interp, Tk_GetUid("stest"), stest_bits, stest_width, stest_height); Tk_DefineBitmap(interp, Tk_GetUid("secure"), secure_bits, secure_width, secure_height); Tk_DefineBitmap(interp, Tk_GetUid("sdr"), sdr_bits, sdr_width, sdr_height); + Tk_DefineBitmap(interp, Tk_GetUid("directory"), directory_bits, directory_width, directory_height); } diff -bBc sdr/src/cache_crypt.tcl src/cache_crypt.tcl *** sdr/src/cache_crypt.tcl Thu Feb 25 10:51:09 1999 --- sdr/src/cache_crypt.tcl Tue Apr 13 15:30:46 1999 *************** *** 104,111 **** catch {set ixnames [array names fullix]} foreach i $ixnames { if {$ldata($fullix($i),trust) != "sip"} { ! if {$ldata($fullix($i),list) == "norm"} { ! set filename "$dirname/cache/$fullix($i)" write_cache_entry $fullix($i) $filename clear } else { --- 104,110 ---- catch {set ixnames [array names fullix]} foreach i $ixnames { if {$ldata($fullix($i),trust) != "sip"} { ! if {[string match *norm $ldata($fullix($i),list)]} { set filename "$dirname/cache/$fullix($i)" write_cache_entry $fullix($i) $filename clear } else { diff -bBc sdr/src/cache_nocrypt.tcl src/cache_nocrypt.tcl *** sdr/src/cache_nocrypt.tcl.orig Thu Mar 26 10:44:22 1998 --- sdr/src/cache_nocrypt.tcl Tue Apr 13 15:30:46 1999 *************** *** 45,51 **** set ixnames {} catch {set ixnames [array names fullix]} foreach i $ixnames { ! if {$ldata($fullix($i),list)=="norm"} { set filename "$dirname/cache/$fullix($i)" write_cache_entry $fullix($i) $filename clear } else { --- 45,51 ---- set ixnames {} catch {set ixnames [array names fullix]} foreach i $ixnames { ! if {[string match *norm $ldata($fullix($i),list)]} { set filename "$dirname/cache/$fullix($i)" write_cache_entry $fullix($i) $filename clear } else { Common subdirectories: sdr/src/html and src/html diff -bBc sdr/src/new.tcl src/new.tcl *** sdr/src/new.tcl.orig Thu Feb 25 13:25:49 1999 --- sdr/src/new.tcl Tue Apr 13 15:30:47 1999 *************** *** 10,25 **** set new_wiz_tech_panels \ "info type timing_tech scope_tech media_tech contact accept" ! proc new {aid} { global ifstyle ldata if {[string compare $aid "new"]!=0} { #we need a working variable while we think about editing sessions, #in case we don't commit the changes. set ldata($aid,tmpmulticast) $ldata($aid,multicast) } new_wiz_init $aid $ifstyle(create) } proc new_wiz_init {aid iftype} { global new_wiz_norm_panels new_wiz_tech_panels --- 10,40 ---- set new_wiz_tech_panels \ "info type timing_tech scope_tech media_tech contact accept" ! proc new {aid {w .w0}} { global ifstyle ldata if {[string compare $aid "new"]!=0} { #we need a working variable while we think about editing sessions, #in case we don't commit the changes. set ldata($aid,tmpmulticast) $ldata($aid,multicast) } + + # Hack to handle multiple directory windows: + # Temporarily change the available 'zones' to those that are + # appropriate for creating a new session in this directory: + global zone savedZoneData zoneDataForWindow + set savedZoneData [array get zone] + array set zone $zoneDataForWindow($w) + new_wiz_init $aid $ifstyle(create) } + proc cleanup_after_new {} { + destroy .new + + # Restore the original zone data: + global zone savedZoneData + catch {array set zone $savedZoneData} + } proc new_wiz_init {aid iftype} { global new_wiz_norm_panels new_wiz_tech_panels *************** *** 50,56 **** -relief raised \ -borderwidth 1 -highlightthickness 0 pack .new.f.b.accept -side left -fill x -expand true ! button .new.f.b.cancel -text "Cancel" -command {destroy .new} \ -relief raised \ -borderwidth 1 -highlightthickness 0 pack .new.f.b.cancel -side left -fill x -expand true --- 65,71 ---- -relief raised \ -borderwidth 1 -highlightthickness 0 pack .new.f.b.accept -side left -fill x -expand true ! button .new.f.b.cancel -text "Cancel" -command {cleanup_after_new} \ -relief raised \ -borderwidth 1 -highlightthickness 0 pack .new.f.b.cancel -side left -fill x -expand true *************** *** 430,436 **** .new.f.b.next configure -state disabled .new.f.b.accept configure -state normal -command \ "if {\[create\]==1} \ ! {destroy .new}" .new.f.b.back configure -state normal -command "new_wiz_panel_[lindex $panels $back_panel] $back_panel \"$panels\" $aid" new_mk_session_accept .new.f.f.accept .new.f.f $aid } --- 445,451 ---- .new.f.b.next configure -state disabled .new.f.b.accept configure -state normal -command \ "if {\[create\]==1} \ ! {cleanup_after_new}" .new.f.b.back configure -state normal -command "new_wiz_panel_[lindex $panels $back_panel] $back_panel \"$panels\" $aid" new_mk_session_accept .new.f.f.accept .new.f.f $aid } *************** *** 1452,1464 **** button $win.create -text [tt "Modify"] -command \ "if {\[create\]==1} \ { do_ad_creation $aid;\ ! destroy .new}" tixAddBalloon $win.create Button [tt "Click here to advertise the modified session. Changing the session name may result in some sites seeing duplicate announcements for a while."] } else { button $win.create -text [tt "Create"] -command \ ! "if {\[create\]==1} {destroy .new}" \ -highlightthickness 0 tixAddBalloon $win.create Button [tt "When you've filled out all the above information, click here to create and advertise this session"] } --- 1467,1479 ---- button $win.create -text [tt "Modify"] -command \ "if {\[create\]==1} \ { do_ad_creation $aid;\ ! cleanup_after_new}" tixAddBalloon $win.create Button [tt "Click here to advertise the modified session. Changing the session name may result in some sites seeing duplicate announcements for a while."] } else { button $win.create -text [tt "Create"] -command \ ! "if {\[create\]==1} {cleanup_after_new}" \ -highlightthickness 0 tixAddBalloon $win.create Button [tt "When you've filled out all the above information, click here to create and advertise this session"] } *************** *** 1469,1475 **** -highlightthickness 0 tixAddBalloon $win.help Button [tt "Click here for more help or to turn balloon help off"] ! button $win.dismiss -text "Dismiss" -command "destroy .new" \ -highlightthickness 0 tixAddBalloon $win.dismiss Button [tt "Click here to close this window"] pack $win.create -side left -fill x -expand true --- 1484,1490 ---- -highlightthickness 0 tixAddBalloon $win.help Button [tt "Click here for more help or to turn balloon help off"] ! button $win.dismiss -text "Dismiss" -command "cleanup_after_new" \ -highlightthickness 0 tixAddBalloon $win.dismiss Button [tt "Click here to close this window"] pack $win.create -side left -fill x -expand true Common subdirectories: sdr/src/plugins and src/plugins diff -bBc sdr/src/plugins.tcl src/plugins.tcl *** sdr/src/plugins.tcl.orig Mon Feb 8 23:59:02 1999 --- sdr/src/plugins.tcl Tue Apr 13 15:30:47 1999 *************** *** 637,648 **** set tmp enabled # catch {puts "$media.$proto.$fmt.[lindex $subrule 0]"} catch {set tmp $tool_state($media.$proto.$fmt.[lindex $subrule 0])} ! if {$tmp=="enabled"} { lappend rulelist $subrule } } } if {[llength $rulelist]==0} { set toollist {} foreach subrule $rule { lappend toollist [lindex $subrule 0] --- 637,655 ---- set tmp enabled # catch {puts "$media.$proto.$fmt.[lindex $subrule 0]"} catch {set tmp $tool_state($media.$proto.$fmt.[lindex $subrule 0])} ! if {$tmp=="enabled" && $subrule != {}} { lappend rulelist $subrule } } } if {[llength $rulelist]==0} { + # Special case for handling SDP/SAP directory sessions: + if {$media=="directory" && $proto=="SAP" && $fmt=="SDP"} { + return [launch_directory $ldata($aid,$mnum,addr) \ + $ldata($aid,$mnum,port) \ + $ldata($aid,ttl) \ + $ldata($aid,session)] + } set toollist {} foreach subrule $rule { lappend toollist [lindex $subrule 0] diff -bBc sdr/src/sap_crypt.tcl src/sap_crypt.tcl *** sdr/src/sap_crypt.tcl.orig Thu Feb 11 13:44:51 1999 --- sdr/src/sap_crypt.tcl Tue Apr 13 15:30:47 1999 *************** *** 846,851 **** --- 846,856 ---- return 0 } set sess "$sess\nc=IN IP4 [get_new_session_addr $media]/$ttl" + # Use a lower on-the-wire TTL if it would exceed our zone's: + if {[info exists zone(ttl,$zone(cur_zone))] + && $zone(ttl,$zone(cur_zone)) < $ttl} { + set ttl $zone(ttl,$zone(cur_zone)) + } if {$media_layers($media)>1} { set sess "$sess/$media_layers($media)" } diff -bBc sdr/src/sd_listen.c src/sd_listen.c *** sdr/src/sd_listen.c.orig Thu Feb 25 13:38:13 1999 --- sdr/src/sd_listen.c Tue Apr 13 15:32:58 1999 *************** *** 135,140 **** --- 135,141 ---- int ui_visible=TRUE; int debug1=FALSE; jmp_buf env; + unsigned initializationHasFinished = 0; void dump(buf, buflen) char *buf; *************** *** 244,249 **** --- 245,256 ---- rx_sock_addr[*no_of_socks]=malloc(strlen(address)+1); strcpy(rx_sock_addr[*no_of_socks], address); rx_sock_port[*no_of_socks]=port; + + if (initializationHasFinished) { + /* This socket was created after initialization, so start listening now */ + linksocket(rxsock[*no_of_socks], TK_READABLE, (Tcl_FileProc*)recv_packets); + } + (*no_of_socks)++; return(*no_of_socks); } *************** *** 1378,1383 **** --- 1385,1392 ---- Tcl_CreateFileHandler(inChannel, TCL_READABLE, (Tcl_FileProc*)do_cli, (ClientData) inChannel); } #endif + + initializationHasFinished = 1; while ((doexit==FALSE)||(Tk_GetNumMainWindows() > 0)) { diff -bBc sdr/src/sdr.tcl src/sdr.tcl *** sdr/src/sdr.tcl.orig Tue Mar 30 03:03:28 1999 --- sdr/src/sdr.tcl Tue Apr 13 16:10:18 1999 *************** *** 87,93 **** --- 87,106 ---- set sdrversion "v2.7e" set titlestr "Multicast Session Directory $sdrversion" + # return the 'current window' (usually ".w0", unless we're updating a subdir): + set lastWindowNum 0 + set currentWindow .w[set lastWindowNum] + proc cw {} { + global currentWindow + return $currentWindow + } + proc setcw {w} { + global currentWindow + set currentWindow $w + } + proc initialise_resources {} { + wm withdraw . global gui tcl_platform if {$gui=="NO_GUI"} { return } #Tk4.0 standard bg *************** *** 204,247 **** $sessbox($list) see $i.0 } ! proc build_interface {first} { global tcl_platform ifstyle gui sessbox global logfile argv0 argv if {$gui=="NO_GUI"} { return } log "Sdr started by [getusername] at [getreadabletime]" set lb $ifstyle(labels) global titlestr - wm title . "sdr:[getemailaddress]" - wm iconname . "sdr:[getemailaddress]" - wm iconbitmap . sdr - wm group . . - wm command . [concat $argv0 $argv] - wm protocol . WM_DELETE_WINDOW quit - if {$first=="first"} { set tmpfile [clock format [clock seconds] -format {%H%M%S}] set logfile "[glob -nocomplain [resource sdrHome]]/log$tmpfile.txt" # puts "debug - logfile will be $logfile" set startlogtime "[clock format [clock seconds]]" putlogfile "logfile started at $startlogtime" ! frame .f1 -relief groove -borderwidth 2 ! # label .f1.l2 -bitmap ucl ! # pack .f1.l2 -side left -fill x ! label .f1.l -text $titlestr -width 32 ! pack .f1.l -side left -fill x ! frame .f2 -relief sunken -borderwidth 2 ! label .f2.l -text "Public Sessions" -font [option get . infoFont Sdr] \ -relief raised -borderwidth 1 ! pack .f2.l -side top -fill x ! text .f2.lb -width 20 -height 15 -yscroll ".f2.sb set" \ -relief flat -wrap none\ -selectforeground [resource activeForeground] \ -selectbackground [resource activeBackground] \ -highlightthickness 0 ! init_session_list norm .f2.lb ! scrollbar .f2.sb -command ".f2.lb yview" \ -background [resource scrollbarForeground] \ -troughcolor [resource scrollbarBackground] \ -borderwidth 1 -relief flat \ --- 217,269 ---- $sessbox($list) see $i.0 } ! proc build_interface {first {dirName {}}} { global tcl_platform ifstyle gui sessbox global logfile argv0 argv if {$gui=="NO_GUI"} { return } log "Sdr started by [getusername] at [getreadabletime]" set lb $ifstyle(labels) global titlestr + if {$first=="first"} { set tmpfile [clock format [clock seconds] -format {%H%M%S}] set logfile "[glob -nocomplain [resource sdrHome]]/log$tmpfile.txt" # puts "debug - logfile will be $logfile" set startlogtime "[clock format [clock seconds]]" putlogfile "logfile started at $startlogtime" + } ! set isNewWindow [expr {![info exists [cw]]}] ! if {$isNewWindow} { ! toplevel [cw] ! wm protocol [cw] WM_DELETE_WINDOW [list handleWindowClose [cw]] ! wm protocol [cw] WM_SAVE_YOURSELF [list quit [cw]] ! ! global sd_sess ! if {$dirName != {}} {set dirName " ($dirName)"} ! wm title [cw] "sdr[set dirName]:[getemailaddress]" ! wm iconname [cw] "sdr[set dirName]:[getemailaddress]" ! wm iconbitmap [cw] sdr ! wm group [cw] [cw] ! wm command [cw] [concat $argv0 $argv] ! ! frame [cw].f1 -relief groove -borderwidth 2 ! # label [cw].f1.l2 -bitmap ucl ! # pack [cw].f1.l2 -side left -fill x ! label [cw].f1.l -text $titlestr -width 32 ! pack [cw].f1.l -side left -fill x ! frame [cw].f2 -relief sunken -borderwidth 2 ! label [cw].f2.l -text "Public Sessions" -font [option get [cw] infoFont Sdr] \ -relief raised -borderwidth 1 ! pack [cw].f2.l -side top -fill x ! text [cw].f2.lb -width 20 -height 15 -yscroll "[cw].f2.sb set" \ -relief flat -wrap none\ -selectforeground [resource activeForeground] \ -selectbackground [resource activeBackground] \ -highlightthickness 0 ! init_session_list [cw].norm [cw].f2.lb ! scrollbar [cw].f2.sb -command "[cw].f2.lb yview" \ -background [resource scrollbarForeground] \ -troughcolor [resource scrollbarBackground] \ -borderwidth 1 -relief flat \ *************** *** 249,352 **** ! pack .f2.lb -side left -fill both -expand true ! pack .f2.sb -side right -fill y ! frame .f4 -relief sunken -borderwidth 2 ! label .f4.l -text "Private Sessions" \ ! -font [option get . infoFont Sdr] \ -relief raised -borderwidth 1 ! pack .f4.l -side top -fill x ! text .f4.lb -width 20 -height 3 -yscroll ".f4.sb set" \ -relief flat -wrap none \ -selectforeground [resource activeForeground] \ -selectbackground [resource activeBackground] \ -highlightthickness 0 ! init_session_list priv .f4.lb ! scrollbar .f4.sb -command ".f4.lb yview" \ -background [resource scrollbarForeground] \ -troughcolor [resource scrollbarBackground] \ -borderwidth 1 -relief flat \ -highlightthickness 0 ! pack .f4.lb -side left -fill both -expand true ! pack .f4.sb -side right -fill y } else { ! destroy .f3 } ! frame .f3 ! menubutton .f3.new -relief raised -menu .f3.new.m \ -padx 0 -pady 1 -borderwidth 1 -highlightthickness 0 -takefocus 1 ! menu .f3.new.m -tearoff 0 ! .f3.new.m add command -label [tt "Create advertised session"] \ ! -command {new new} ! .f3.new.m add command -label [tt "Quick Call"] -command {qcall} ! button .f3.cal -relief raised -command {calendar} \ -padx 0 -pady 1 -borderwidth 1 -highlightthickness 0 ! tixAddBalloon .f3.cal Button [tt "Display a calendar listing booked sessions"] ! button .f3.prefs -relief raised -command {preferences2} \ -padx 0 -pady 1 -borderwidth 1 -highlightthickness 0 ! tixAddBalloon .f3.prefs Button [tt "Set the way sdr does things"] #AUTH ! menubutton .f3.help -relief raised -menu .f3.help.m \ -padx 0 -pady 1 -borderwidth 1 -highlightthickness 0 -takefocus 1 ! menu .f3.help.m -tearoff 0 ! .f3.help configure -text [tt "Help"] #AUTH ! .f3.help.m add command -label [tt "sdr Help"] \ ! -command {help} ! #tixAddBalloon .f3.help.m Button "Turn these help messages on and off" ! .f3.help.m add command -label [tt "key setup"] -command {Help_asym asym_help} ! # button .f3.help -text [tt "Help"] -relief raised -command {help} \ # -padx 0 -pady 1 -borderwidth 1 -highlightthickness 0 ! # button .f3.help -text [tt "Help"] -relief raised -command {help} \ # -padx 0 -pady 1 -borderwidth 1 -highlightthickness 0 ! # tixAddBalloon .f3.help Button "Turn these help messages on and off" ! button .f3.quit -text [tt "Quit"] -relief raised -command quit \ -padx 0 -pady 1 -borderwidth 1 -highlightthickness 0 ! tixAddBalloon .f3.quit Button [tt "Quit from sdr. Conference tools already running will continue."] if {$lb=="short"} { ! .f3.new configure -text [tt "New"] ! .f3.cal configure -text [tt "Calendar"] ! .f3.prefs configure -text [tt "Prefs"] ! } else { ! .f3.new configure -text " [tt "Create Session"] " ! .f3.cal configure -text " [tt "Daily Listings"] " ! .f3.prefs configure -text " [tt "Preferences"] " ! .f3.help configure -text " [tt Help] " ! .f3.quit configure -text " [tt Quit] " ! } ! ! hlfocus .f3.new ! hlfocus .f3.cal ! hlfocus .f3.prefs ! hlfocus .f3.help ! hlfocus .f3.quit ! ! pack .f3.new -side left -fill both -pady 0 -expand true ! pack .f3.cal -side left -fill both -pady 0 -expand true ! pack .f3.prefs -side left -fill both -pady 0 -expand true ! pack .f3.help -side left -fill both -pady 0 -expand true ! pack .f3.quit -side left -fill both -pady 0 -expand true ! if {$first=="first"} { ! pack .f3 -side top -fill x ! pack .f1 -side bottom -fill x ! pack .f2 -side top -fill both -expand true ! bind_listbox norm ! bind_listbox priv } else { ! pack .f3 -side top -before .f2 -fill x } } --- 271,374 ---- ! pack [cw].f2.lb -side left -fill both -expand true ! pack [cw].f2.sb -side right -fill y ! frame [cw].f4 -relief sunken -borderwidth 2 ! label [cw].f4.l -text "Private Sessions" \ ! -font [option get [cw] infoFont Sdr] \ -relief raised -borderwidth 1 ! pack [cw].f4.l -side top -fill x ! text [cw].f4.lb -width 20 -height 3 -yscroll "[cw].f4.sb set" \ -relief flat -wrap none \ -selectforeground [resource activeForeground] \ -selectbackground [resource activeBackground] \ -highlightthickness 0 ! init_session_list [cw].priv [cw].f4.lb ! scrollbar [cw].f4.sb -command "[cw].f4.lb yview" \ -background [resource scrollbarForeground] \ -troughcolor [resource scrollbarBackground] \ -borderwidth 1 -relief flat \ -highlightthickness 0 ! pack [cw].f4.lb -side left -fill both -expand true ! pack [cw].f4.sb -side right -fill y } else { ! destroy [cw].f3 } ! frame [cw].f3 ! menubutton [cw].f3.new -relief raised -menu [cw].f3.new.m \ -padx 0 -pady 1 -borderwidth 1 -highlightthickness 0 -takefocus 1 ! menu [cw].f3.new.m -tearoff 0 ! [cw].f3.new.m add command -label [tt "Create advertised session"] \ ! -command [list new new [cw]] ! [cw].f3.new.m add command -label [tt "Quick Call"] -command {qcall} ! button [cw].f3.cal -relief raised -command [list calendar [cw]] \ -padx 0 -pady 1 -borderwidth 1 -highlightthickness 0 ! tixAddBalloon [cw].f3.cal Button [tt "Display a calendar listing booked sessions"] ! button [cw].f3.prefs -relief raised -command [list preferences2 [cw]] \ -padx 0 -pady 1 -borderwidth 1 -highlightthickness 0 ! tixAddBalloon [cw].f3.prefs Button [tt "Set the way sdr does things"] #AUTH ! menubutton [cw].f3.help -relief raised -menu [cw].f3.help.m \ -padx 0 -pady 1 -borderwidth 1 -highlightthickness 0 -takefocus 1 ! menu [cw].f3.help.m -tearoff 0 ! [cw].f3.help configure -text [tt "Help"] #AUTH ! [cw].f3.help.m add command -label [tt "sdr Help"] \ ! -command [list help [cw]] ! #tixAddBalloon [cw].f3.help.m Button "Turn these help messages on and off" ! [cw].f3.help.m add command -label [tt "key setup"] -command {Help_asym asym_help} ! # button [cw].f3.help -text [tt "Help"] -relief raised -command [list help [cw]] \ # -padx 0 -pady 1 -borderwidth 1 -highlightthickness 0 ! # button [cw].f3.help -text [tt "Help"] -relief raised -command [list help [cw]] \ # -padx 0 -pady 1 -borderwidth 1 -highlightthickness 0 ! # tixAddBalloon [cw].f3.help Button "Turn these help messages on and off" ! button [cw].f3.quit -text [tt "Quit"] -relief raised -command [list quit [cw]] \ -padx 0 -pady 1 -borderwidth 1 -highlightthickness 0 ! tixAddBalloon [cw].f3.quit Button [tt "Quit from sdr. Conference tools already running will continue."] if {$lb=="short"} { ! [cw].f3.new configure -text [tt "New"] ! [cw].f3.cal configure -text [tt "Calendar"] ! [cw].f3.prefs configure -text [tt "Prefs"] ! } else { ! [cw].f3.new configure -text " [tt "Create Session"] " ! [cw].f3.cal configure -text " [tt "Daily Listings"] " ! [cw].f3.prefs configure -text " [tt "Preferences"] " ! [cw].f3.help configure -text " [tt Help] " ! [cw].f3.quit configure -text " [tt Quit] " ! } ! ! hlfocus [cw].f3.new ! hlfocus [cw].f3.cal ! hlfocus [cw].f3.prefs ! hlfocus [cw].f3.help ! hlfocus [cw].f3.quit ! ! pack [cw].f3.new -side left -fill both -pady 0 -expand true ! pack [cw].f3.cal -side left -fill both -pady 0 -expand true ! pack [cw].f3.prefs -side left -fill both -pady 0 -expand true ! pack [cw].f3.help -side left -fill both -pady 0 -expand true ! pack [cw].f3.quit -side left -fill both -pady 0 -expand true ! if {$isNewWindow} { ! pack [cw].f3 -side top -fill x ! pack [cw].f1 -side bottom -fill x ! pack [cw].f2 -side top -fill both -expand true ! bind_listbox [cw].norm ! bind_listbox [cw].priv } else { ! pack [cw].f3 -side top -before [cw].f2 -fill x } } *************** *** 363,369 **** bind $lb {break} bind $lb {break} bind $lb "focus $lb" ! bind $lb "focus ." bind $lb "scroll_to_session %K $list; break" tixAddBalloon $lb Listbox "Click button 1 on a listed session for more information on it or to participate in it. --- 385,391 ---- bind $lb {break} bind $lb {break} bind $lb "focus $lb" ! bind $lb "focus [cw]" bind $lb "scroll_to_session %K $list; break" tixAddBalloon $lb Listbox "Click button 1 on a listed session for more information on it or to participate in it. *************** *** 413,420 **** bind $lb j {tkListboxUpDown %W 1} } ! proc quit {} { global log give_status_msg "Writing cache files..." update idletasks write_cache --- 435,443 ---- bind $lb j {tkListboxUpDown %W 1} } ! proc quit {w} { global log + setcw $w give_status_msg "Writing cache files..." update idletasks write_cache *************** *** 424,433 **** destroy . } proc give_status_msg {text} { global titlestr ! .f1.l configure -text $text -font [option get . italfont Sdr] ! after 2000 .f1.l configure -text \"$titlestr\" -font [option get . font Sdr] } set fullnumitems 0 --- 447,472 ---- destroy . } + proc handleWindowClose {w} { + global windowForGroupPort + foreach gp [array names windowForGroupPort] { + if {[string compare $windowForGroupPort($gp) $w] == 0} { + unset windowForGroupPort($gp) + } + } + + # If there are no longer any windows open, quit + if {[array size windowForGroupPort] == 0} { + quit $w + } + + catch {destroy $w} + } + proc give_status_msg {text} { global titlestr ! [cw].f1.l configure -text $text -font [option get [cw] italfont Sdr] ! after 2000 [cw].f1.l configure -text \"$titlestr\" -font [option get [cw] font Sdr] } set fullnumitems 0 *************** *** 772,778 **** --- 812,832 ---- set ldata($aid,medianum) 0 } set medianum 0 + + # Display the session, but first make sure we use the right window for it: + global windowForGroupPort + if {![catch {set w $windowForGroupPort($recvsap_addr,$recvsap_port)}]} { + set oldCW [cw] + setcw $w display_session $aid $code + setcw $oldCW + } else { + # There's no window for this (group,port) now, but there may be later, + # so save this entry for later: + global entryForGroupPort + set entryForGroupPort($recvsap_addr,$recvsap_port,$aid) $aid + } + # set tfrom 0 # set tto 0 } *************** *** 809,820 **** #actually display it #AUTH if {$ldata($aid,key)!=""} { ! add_to_display_list $aid priv } else { if { ($ldata($aid,enctype) == "x509")||($ldata($aid,enctype) == "pgp") } { ! add_to_display_list $aid priv } else { ! add_to_display_list $aid norm } } --- 863,874 ---- #actually display it #AUTH if {$ldata($aid,key)!=""} { ! add_to_display_list $aid [cw].priv } else { if { ($ldata($aid,enctype) == "x509")||($ldata($aid,enctype) == "pgp") } { ! add_to_display_list $aid [cw].priv } else { ! add_to_display_list $aid [cw].norm } } *************** *** 838,844 **** #check if it's already displayed foreach index [array names ix] { ! if {[string compare "[string range $index 0 3],$ix($index)" "$list,$aid"]==0} { debug "session already displayed - why are we here?" return 0 } --- 892,898 ---- #check if it's already displayed foreach index [array names ix] { ! if {[string compare "[lindex [split $index ,] 0],$ix($index)" "$list,$aid"]==0} { debug "session already displayed - why are we here?" return 0 } *************** *** 897,902 **** --- 951,958 ---- proc list_session {aid lastix list} { global sessbox ldata ifstyle + if {![winfo exists $sessbox($list)]} return + #puts "$ldata($aid,session)" set newname $ldata($aid,session) if {$ldata($aid,trust)!="sip"} { *************** *** 923,934 **** -bitmap [get_type_icon $ldata($aid,type) $autht $enct] \ -borderwidth 2 -relief groove bind $sessbox($list).win$aid \ ! "highlight_tag $aid enter" bind $sessbox($list).win$aid \ ! "highlight_tag $aid leave" ! bind $sessbox($list).win$aid <1> "toggle_popup $aid" ! bind $sessbox($list).win$aid <2> "start_all $aid" ! bind $sessbox($list).win$aid <3> "hide_session $aid" } #puts "$sessbox($list) window create ..." $sessbox($list) window create [expr $lastix+1].0 -window \ --- 979,990 ---- -bitmap [get_type_icon $ldata($aid,type) $autht $enct] \ -borderwidth 2 -relief groove bind $sessbox($list).win$aid \ ! "setcw [cw]; highlight_tag $aid enter" bind $sessbox($list).win$aid \ ! "setcw [cw]; highlight_tag $aid leave" ! bind $sessbox($list).win$aid <1> "setcw [cw]; toggle_popup $aid" ! bind $sessbox($list).win$aid <2> "setcw [cw]; start_all $aid" ! bind $sessbox($list).win$aid <3> "setcw [cw]; hide_session $aid" } #puts "$sessbox($list) window create ..." $sessbox($list) window create [expr $lastix+1].0 -window \ *************** *** 941,971 **** # PCs will crash here if the scrollbar is being used at the same time..... $sessbox($list) tag add t$aid [expr $lastix+1].0 [expr $lastix+1].end ! $sessbox($list) tag bind t$aid <1> "toggle_popup $aid" ! $sessbox($list) tag bind t$aid <2> "start_all $aid" ! $sessbox($list) tag bind t$aid <3> "hide_session $aid" $sessbox($list) tag bind t$aid \ ! "highlight_tag $aid enter" $sessbox($list) tag bind t$aid \ ! "highlight_tag $aid leave" if {[ispopped $aid]==1} { $sessbox($list) tag configure t$aid \ ! -foreground [option get . background Sdr] \ ! -background [option get . foreground Sdr] catch {$sessbox($ldata($aid,list)).win$aid configure \ ! -foreground [option get . background Sdr] \ ! -background [option get . foreground Sdr] } } elseif {[listing_criteria $aid future]==1} { $sessbox($list) tag configure t$aid \ ! -foreground [option get . disabledForeground Sdr] \ ! -background [option get . background Sdr] catch {$sessbox($list).win$aid configure \ ! -foreground [option get . disabledForeground Sdr] \ ! -background [option get . background Sdr] } } else { $sessbox($list) tag configure t$aid \ ! -foreground [option get . foreground Sdr] \ ! -background [option get . background Sdr] } } --- 997,1027 ---- # PCs will crash here if the scrollbar is being used at the same time..... $sessbox($list) tag add t$aid [expr $lastix+1].0 [expr $lastix+1].end ! $sessbox($list) tag bind t$aid <1> "setcw [cw]; toggle_popup $aid" ! $sessbox($list) tag bind t$aid <2> "setcw [cw]; start_all $aid" ! $sessbox($list) tag bind t$aid <3> "setcw [cw]; hide_session $aid" $sessbox($list) tag bind t$aid \ ! "setcw [cw]; highlight_tag $aid enter" $sessbox($list) tag bind t$aid \ ! "setcw [cw]; highlight_tag $aid leave" if {[ispopped $aid]==1} { $sessbox($list) tag configure t$aid \ ! -foreground [option get [cw] background Sdr] \ ! -background [option get [cw] foreground Sdr] catch {$sessbox($ldata($aid,list)).win$aid configure \ ! -foreground [option get [cw] background Sdr] \ ! -background [option get [cw] foreground Sdr] } } elseif {[listing_criteria $aid future]==1} { $sessbox($list) tag configure t$aid \ ! -foreground [option get [cw] disabledForeground Sdr] \ ! -background [option get [cw] background Sdr] catch {$sessbox($list).win$aid configure \ ! -foreground [option get [cw] disabledForeground Sdr] \ ! -background [option get [cw] background Sdr] } } else { $sessbox($list) tag configure t$aid \ ! -foreground [option get [cw] foreground Sdr] \ ! -background [option get [cw] background Sdr] } } *************** *** 1005,1056 **** enter { if {[ispopped $aid]==1} { $win tag configure t$aid \ ! -foreground [option get . activeBackground Sdr] catch {$icon configure \ ! -foreground [option get . activeBackground Sdr]} } else { $win tag configure t$aid -background \ ! [option get . activeBackground Sdr] catch {$icon configure -background \ ! [option get . activeBackground Sdr]} } } leave { if {[ispopped $aid]==1} { $win tag configure t$aid \ ! -foreground [option get . background Sdr] catch {$icon configure \ ! -foreground [option get . background Sdr]} } else { $win tag configure t$aid \ ! -background [option get . background Sdr] catch {$icon configure \ ! -background [option get . background Sdr]} } } popup { $win tag configure t$aid \ ! -foreground [option get . background Sdr] \ ! -background [option get . foreground Sdr] catch {$icon configure \ ! -foreground [option get . background Sdr] \ ! -background [option get . foreground Sdr]} } popdown { if {[listing_criteria $aid future]==1} { $win tag configure t$aid \ ! -foreground [option get . disabledForeground Sdr] \ ! -background [option get . background Sdr] catch {$icon configure \ ! -foreground [option get . disabledForeground Sdr] \ ! -background [option get . background Sdr]} } else { $win tag configure t$aid \ ! -foreground [option get . foreground Sdr] \ ! -background [option get . background Sdr] catch {$icon configure \ ! -foreground [option get . foreground Sdr] \ ! -background [option get . background Sdr]} } } } --- 1061,1112 ---- enter { if {[ispopped $aid]==1} { $win tag configure t$aid \ ! -foreground [option get [cw] activeBackground Sdr] catch {$icon configure \ ! -foreground [option get [cw] activeBackground Sdr]} } else { $win tag configure t$aid -background \ ! [option get [cw] activeBackground Sdr] catch {$icon configure -background \ ! [option get [cw] activeBackground Sdr]} } } leave { if {[ispopped $aid]==1} { $win tag configure t$aid \ ! -foreground [option get [cw] background Sdr] catch {$icon configure \ ! -foreground [option get [cw] background Sdr]} } else { $win tag configure t$aid \ ! -background [option get [cw] background Sdr] catch {$icon configure \ ! -background [option get [cw] background Sdr]} } } popup { $win tag configure t$aid \ ! -foreground [option get [cw] background Sdr] \ ! -background [option get [cw] foreground Sdr] catch {$icon configure \ ! -foreground [option get [cw] background Sdr] \ ! -background [option get [cw] foreground Sdr]} } popdown { if {[listing_criteria $aid future]==1} { $win tag configure t$aid \ ! -foreground [option get [cw] disabledForeground Sdr] \ ! -background [option get [cw] background Sdr] catch {$icon configure \ ! -foreground [option get [cw] disabledForeground Sdr] \ ! -background [option get [cw] background Sdr]} } else { $win tag configure t$aid \ ! -foreground [option get [cw] foreground Sdr] \ ! -background [option get [cw] background Sdr] catch {$icon configure \ ! -foreground [option get [cw] foreground Sdr] \ ! -background [option get [cw] background Sdr]} } } } *************** *** 1069,1076 **** proc show_session_list {list} { debug "show_session_list $list" ! if {$list=="priv"} { ! catch {pack .f4 -side top -fill both -expand true -after .f2} } debug "done" } --- 1125,1132 ---- proc show_session_list {list} { debug "show_session_list $list" ! if {$list=="[cw].priv"} { ! catch {pack [cw].f4 -side top -fill both -expand true -after [cw].f2} } debug "done" } *************** *** 1153,1158 **** --- 1209,1216 ---- proc reshow_sessions {spec} { global ldata fullnumitems fullix items ix sessbox sesslists ifstyle foreach box [array names sessbox] { + if {![winfo exists sessbox($box)]} continue + if {$ifstyle(list)=="normal"} { $sessbox($box) configure -spacing1 4 } else { *************** *** 1380,1386 **** } for {set i 1} {$i <= $tagnum} {incr i} { $win tag configure url$i \ ! -foreground [option get . hotForeground Sdr] $win tag configure url$i -relief raised if {$inbrowser} { $win tag bind url$i <1> \ --- 1438,1444 ---- } for {set i 1} {$i <= $tagnum} {incr i} { $win tag configure url$i \ ! -foreground [option get [cw] hotForeground Sdr] $win tag configure url$i -relief raised if {$inbrowser} { $win tag bind url$i <1> \ *************** *** 1389,1409 **** webdisp [set url$i]" $win tag bind url$i \ "$win tag configure url$i \ ! -foreground [option get . activehotForeground Sdr];\ overhref [set url$i]" $win tag bind url$i \ "$win tag configure url$i \ ! -foreground [option get . hotForeground Sdr];\ overhref" } else { $win tag bind url$i <1> \ "get_uri [set url$i]" $win tag bind url$i \ "$win tag configure url$i \ ! -foreground [option get . activehotForeground Sdr]" $win tag bind url$i \ "$win tag configure url$i \ ! -foreground [option get . hotForeground Sdr]" } } } --- 1447,1467 ---- webdisp [set url$i]" $win tag bind url$i \ "$win tag configure url$i \ ! -foreground [option get [cw] activehotForeground Sdr];\ overhref [set url$i]" $win tag bind url$i \ "$win tag configure url$i \ ! -foreground [option get [cw] hotForeground Sdr];\ overhref" } else { $win tag bind url$i <1> \ "get_uri [set url$i]" $win tag bind url$i \ "$win tag configure url$i \ ! -foreground [option get [cw] activehotForeground Sdr]" $win tag bind url$i \ "$win tag configure url$i \ ! -foreground [option get [cw] hotForeground Sdr]" } } } *************** *** 1612,1618 **** wm iconname $wname "Sdr: Incoming call from $msgsrc" frame $win.inv -borderwidth 2 -relief groove pack $win.inv -side top -fill x -expand true ! label $win.inv.l -text "Incoming Call" -font [option get . largeFont Sdr] pack $win.inv.l -side top frame $win.inv.f -borderwidth 0 pack $win.inv.f -side top -fill x -expand true --- 1670,1676 ---- wm iconname $wname "Sdr: Incoming call from $msgsrc" frame $win.inv -borderwidth 2 -relief groove pack $win.inv -side top -fill x -expand true ! label $win.inv.l -text "Incoming Call" -font [option get [cw] largeFont Sdr] pack $win.inv.l -side top frame $win.inv.f -borderwidth 0 pack $win.inv.f -side top -fill x -expand true *************** *** 1652,1659 **** -highlightthickness 0 #TBD ! # -activeforeground [option get . scrollbarActiveForeground Sdr] \ ! # -foreground [option get . scrollbarForeground Sdr] # $win.f0.desc insert 0.0 [text_wrap $ldata($aid,desc) 40] $win.f0.desc insert 0.0 $ldata($aid,desc) $win.f0.desc configure -state disabled --- 1710,1717 ---- -highlightthickness 0 #TBD ! # -activeforeground [option get [cw] scrollbarActiveForeground Sdr] \ ! # -foreground [option get [cw] scrollbarForeground Sdr] # $win.f0.desc insert 0.0 [text_wrap $ldata($aid,desc) 40] $win.f0.desc insert 0.0 $ldata($aid,desc) $win.f0.desc configure -state disabled *************** *** 1664,1670 **** highlight_url $win.f0.desc ! set mf [option get . mediumFont Sdr] pack [frame $win.hidden1 -width 1 -height 1] -side top -padx 0 -pady 0 if {$ldata($aid,tfrom)!=0} { # if {($ldata($aid,no_of_times)>1)||($ldata($aid,time0,no_of_rpts)>0)} { --- 1722,1728 ---- highlight_url $win.f0.desc ! set mf [option get [cw] mediumFont Sdr] pack [frame $win.hidden1 -width 1 -height 1] -side top -padx 0 -pady 0 if {$ldata($aid,tfrom)!=0} { # if {($ldata($aid,no_of_times)>1)||($ldata($aid,time0,no_of_rpts)>0)} { *************** *** 1723,1729 **** } iconbutton $win.buttons.info -text $str -bitmap www -relief raised \ -borderwidth 1 -command "get_uri $ldata($aid,uri)" \ ! -font [option get . mediumFont Sdr] -pad $pad tixAddBalloon $win.buttons.info Frame [tt "Click here for more \ information about the session. The information will be in the \ --- 1781,1787 ---- } iconbutton $win.buttons.info -text $str -bitmap www -relief raised \ -borderwidth 1 -command "get_uri $ldata($aid,uri)" \ ! -font [option get [cw] mediumFont Sdr] -pad $pad tixAddBalloon $win.buttons.info Frame [tt "Click here for more \ information about the session. The information will be in the \ *************** *** 1743,1755 **** } iconbutton $win.buttons.contact -text $str -bitmap phone -relief raised \ -borderwidth 1 -command "contact $win $aid" \ ! -font [option get . mediumFont Sdr] -pad $pad tixAddBalloon $win.buttons.contact Frame [tt "Display the name, email address, and phone number of the person who is responsible for this session."] incr $win.visible pack $win.buttons.contact -side left -fill x -expand true # if {($ldata($aid,no_of_times)>1)||($ldata($aid,time0,no_of_rpts)>0)} { # iconbutton $win.buttons.times -text "Detailed times" -bitmap clock -relief raised \ ! # -borderwidth 1 -command "show_times $win $aid" -font [option get . mediumFont Sdr] # tixAddBalloon $win.buttons.times Button [tt "Display detailed information about when this session is active."] # incr $win.visible # pack $win.buttons.times -side left -fill x -expand true --- 1801,1813 ---- } iconbutton $win.buttons.contact -text $str -bitmap phone -relief raised \ -borderwidth 1 -command "contact $win $aid" \ ! -font [option get [cw] mediumFont Sdr] -pad $pad tixAddBalloon $win.buttons.contact Frame [tt "Display the name, email address, and phone number of the person who is responsible for this session."] incr $win.visible pack $win.buttons.contact -side left -fill x -expand true # if {($ldata($aid,no_of_times)>1)||($ldata($aid,time0,no_of_rpts)>0)} { # iconbutton $win.buttons.times -text "Detailed times" -bitmap clock -relief raised \ ! # -borderwidth 1 -command "show_times $win $aid" -font [option get [cw] mediumFont Sdr] # tixAddBalloon $win.buttons.times Button [tt "Display detailed information about when this session is active."] # incr $win.visible # pack $win.buttons.times -side left -fill x -expand true *************** *** 1757,1763 **** if {$ifstyle=="norm"} { iconbutton $win.buttons.tech -text "Media\nDetails" -command \ "popup $aid tech $msgsrc;break" -borderwidth 1 -relief raised \ ! -bitmap tools -font [option get . mediumFont Sdr] -pad 0 tixAddBalloon $win.buttons.tech Frame [tt "Click here for information \ about the media used in the session and their formats, and to start up the \ media tools individually."] --- 1815,1821 ---- if {$ifstyle=="norm"} { iconbutton $win.buttons.tech -text "Media\nDetails" -command \ "popup $aid tech $msgsrc;break" -borderwidth 1 -relief raised \ ! -bitmap tools -font [option get [cw] mediumFont Sdr] -pad 0 tixAddBalloon $win.buttons.tech Frame [tt "Click here for information \ about the media used in the session and their formats, and to start up the \ media tools individually."] *************** *** 1882,1892 **** if {$ifstyle=="tech"} { label $win.heard -text \ "[tt "Heard from"] $ldata($aid,heardfrom) [tt at] $ldata($aid,theard)" \ ! -font [option get . infoFont Sdr] pack $win.heard -side top if {$ldata($aid,source)!=$ldata($aid,heardfrom)} { label $win.src -text "[tt "Originally announced from"] $ldata($aid,source)" \ ! -font [option get . infoFont Sdr] pack $win.src -side top } } --- 1940,1950 ---- if {$ifstyle=="tech"} { label $win.heard -text \ "[tt "Heard from"] $ldata($aid,heardfrom) [tt at] $ldata($aid,theard)" \ ! -font [option get [cw] infoFont Sdr] pack $win.heard -side top if {$ldata($aid,source)!=$ldata($aid,heardfrom)} { label $win.src -text "[tt "Originally announced from"] $ldata($aid,source)" \ ! -font [option get [cw] infoFont Sdr] pack $win.src -side top } } *************** *** 2033,2039 **** set code 0 catch {set code [$fname.d6 delete 0 end;$fname.d6 insert 0 $vars]} if {$code==0} { ! set infofont "[option get . infoFont Sdr]" label $fname.l6 -text "Vars:" -font $infofont entry $fname.d6 -relief sunken -borderwidth 1\ -font $infofont --- 2091,2097 ---- set code 0 catch {set code [$fname.d6 delete 0 end;$fname.d6 insert 0 $vars]} if {$code==0} { ! set infofont "[option get [cw] infoFont Sdr]" label $fname.l6 -text "Vars:" -font $infofont entry $fname.d6 -relief sunken -borderwidth 1\ -font $infofont *************** *** 2091,2097 **** incr $win.visible -1 if {[set $win.visible]==0} {pack forget $win.buttons} frame $win.cinfo -borderwidth 2 -relief groove ! set mf [option get . mediumFont Sdr] pack $win.cinfo -side top -fill x -after $win.hidden2 label $win.cinfo.created -text "Created by: $ldata($aid,creator)@$ldata($aid,createaddr)" -font $mf pack $win.cinfo.created -side top --- 2149,2155 ---- incr $win.visible -1 if {[set $win.visible]==0} {pack forget $win.buttons} frame $win.cinfo -borderwidth 2 -relief groove ! set mf [option get [cw] mediumFont Sdr] pack $win.cinfo -side top -fill x -after $win.hidden2 label $win.cinfo.created -text "Created by: $ldata($aid,creator)@$ldata($aid,createaddr)" -font $mf pack $win.cinfo.created -side top *************** *** 2240,2246 **** } } else { ! if {$ldata($aid,endtime) == 0} { set timestr [format "%sstarting at %s %s %s" $timestr\ [croptime $ldata($aid,tfrom,$i)]\ [croptz $ldata($aid,tfrom,$i)]\ --- 2298,2312 ---- } } else { ! # NOTE TO UCL: There was a bug in your original code here. ! # If you create an "advertised session" and choose the default ! # settings throughout the creation dialog, "ldata(new,endtime)" ! # does not exist at this point. To overcome this bug, I've added ! # the "![info exists ..." line below. ! # Ross Finlayson (finlayson@live.com) ! if { ! ![info exists ldata($aid,endtime)] || ! $ldata($aid,endtime) == 0} { set timestr [format "%sstarting at %s %s %s" $timestr\ [croptime $ldata($aid,tfrom,$i)]\ [croptz $ldata($aid,tfrom,$i)]\ *************** *** 2328,2335 **** -highlightthickness 0 #TBD ! # -foreground [option get . scrollbarForeground Sdr] \ ! # -activeforeground [option get . scrollbarActiveForeground Sdr] foreach i [exec ls -a] { .record.f.f0.lb insert end $i } --- 2394,2401 ---- -highlightthickness 0 #TBD ! # -foreground [option get [cw] scrollbarForeground Sdr] \ ! # -activeforeground [option get [cw] scrollbarActiveForeground Sdr] foreach i [exec ls -a] { .record.f.f0.lb insert end $i } *************** *** 2463,2470 **** } } ! proc preferences2 {} { global showwhich balloonHelp binder_tags prefprocs catch {destroy .prefs} sdr_toplevel .prefs "Preferences" posn_win .prefs --- 2529,2537 ---- } } ! proc preferences2 {w} { global showwhich balloonHelp binder_tags prefprocs + setcw $w catch {destroy .prefs} sdr_toplevel .prefs "Preferences" posn_win .prefs *************** *** 2485,2491 **** frame .prefs.f0 pack .prefs.f0 -side top canvas .prefs.f0.c -width 600 -height 300 ! #-background [option get . prefsBackground Sdr] pack .prefs.f0.c -side top set xpos 20 --- 2552,2558 ---- frame .prefs.f0 pack .prefs.f0 -side top canvas .prefs.f0.c -width 600 -height 300 ! #-background [option get [cw] prefsBackground Sdr] pack .prefs.f0.c -side top set xpos 20 *************** *** 2502,2508 **** bind .prefs.f3.mode "focus $binder_tags(show,button)" post_binder .prefs.f0.c show label .prefs.help -relief raised -borderwidth 1 \ ! -font [option get . infoFont Sdr] pack .prefs.help -side top -fill x -expand true frame .prefs.f1 button .prefs.f1.cancel -text [tt "Cancel"] -command {destroy .prefs} --- 2569,2575 ---- bind .prefs.f3.mode "focus $binder_tags(show,button)" post_binder .prefs.f0.c show label .prefs.help -relief raised -borderwidth 1 \ ! -font [option get [cw] infoFont Sdr] pack .prefs.help -side top -fill x -expand true frame .prefs.f1 button .prefs.f1.cancel -text [tt "Cancel"] -command {destroy .prefs} *************** *** 2817,2823 **** -highlightthickness 0 \ -variable prefs(web_webtype) -value startmosaic -relief flat bind_help $win.f.f.r2 [tt "Select this to start a new copy of the web browser for each URL."] ! entry $win.f.f.wwwname -width 10 -relief sunken -background [option get . entryBackground Sdr] -textvariable prefs(web_webclient) frame $win.f.f2 radiobutton $win.f.f2.r4 -text [tt "Use sdr's built in web browser"] \ --- 2884,2890 ---- -highlightthickness 0 \ -variable prefs(web_webtype) -value startmosaic -relief flat bind_help $win.f.f.r2 [tt "Select this to start a new copy of the web browser for each URL."] ! entry $win.f.f.wwwname -width 10 -relief sunken -background [option get [cw] entryBackground Sdr] -textvariable prefs(web_webclient) frame $win.f.f2 radiobutton $win.f.f2.r4 -text [tt "Use sdr's built in web browser"] \ *************** *** 2827,2834 **** frame $win.f.f2.f label $win.f.f2.f.l1 -text [tt " Proxy:"] label $win.f.f2.f.l2 -text [tt "in the form \"host:port\""] \ ! -font [option get . infoFont Sdr] ! entry $win.f.f2.f.wwwproxy -width 25 -relief sunken -background [option get . entryBackground Sdr] -textvariable prefs(web_webproxy) bind_help $win.f.f2.f.wwwproxy [tt "Enter your web proxy in the form ``host:port''. This is optional."] tixAddBalloon $win.f.f2 Frame [tt "Enter your web proxy in the form \"host:port\"."] --- 2894,2901 ---- frame $win.f.f2.f label $win.f.f2.f.l1 -text [tt " Proxy:"] label $win.f.f2.f.l2 -text [tt "in the form \"host:port\""] \ ! -font [option get [cw] infoFont Sdr] ! entry $win.f.f2.f.wwwproxy -width 25 -relief sunken -background [option get [cw] entryBackground Sdr] -textvariable prefs(web_webproxy) bind_help $win.f.f2.f.wwwproxy [tt "Enter your web proxy in the form ``host:port''. This is optional."] tixAddBalloon $win.f.f2 Frame [tt "Enter your web proxy in the form \"host:port\"."] *************** *** 3074,3108 **** pack $win.f.n -side top -fill x -expand true -pady 5 label $win.f.n.l -text [tt "Name:"] pack $win.f.n.l -side left ! entry $win.f.n.e -width 30 -relief sunken -background [option get . entryBackground Sdr] -textvariable prefs(pers_name) pack $win.f.n.e -side right frame $win.f.e pack $win.f.e -side top -fill x -expand true -pady 5 label $win.f.e.l -text [tt "Email:"] pack $win.f.e.l -side left ! entry $win.f.e.e -width 30 -relief sunken -background [option get . entryBackground Sdr] -textvariable prefs(pers_email) pack $win.f.e.e -side right frame $win.f.p pack $win.f.p -side top -fill x -expand true -pady 5 label $win.f.p.l -text [tt "Phone:"] pack $win.f.p.l -side left ! entry $win.f.p.e -width 30 -relief sunken -background [option get . entryBackground Sdr] -textvariable prefs(pers_phone) pack $win.f.p.e -side right ! message $win.f.sipa -aspect 400 -font [option get . infoFont Sdr] -text \ "A SIP alias is a name people can put in a session invitation to call you. Normally they will use your username, but if you want sdr to answer calls addressed to a more human-readable name, you can add it here. You cannot add another valid username." pack $win.f.sipa -side top frame $win.f.a pack $win.f.a -side top -fill x -expand true -pady 5 label $win.f.a.l -text [tt "SIP Alias:"] pack $win.f.a.l -side left ! entry $win.f.a.e -width 30 -relief sunken -background [option get . entryBackground Sdr] -textvariable prefs(pers_alias) pack $win.f.a.e -side right frame $win.f.ss pack $win.f.ss -side top -fill x -expand true -pady 5 label $win.f.ss.l -text [tt "SIP Server URL:"] pack $win.f.ss.l -side left ! entry $win.f.ss.e -width 30 -relief sunken -background [option get . entryBackground Sdr] -textvariable prefs(pers_sipserv) pack $win.f.ss.e -side right frame $win.f2 -borderwidth 0 -relief flat -width 1 -height \ --- 3141,3175 ---- pack $win.f.n -side top -fill x -expand true -pady 5 label $win.f.n.l -text [tt "Name:"] pack $win.f.n.l -side left ! entry $win.f.n.e -width 30 -relief sunken -background [option get [cw] entryBackground Sdr] -textvariable prefs(pers_name) pack $win.f.n.e -side right frame $win.f.e pack $win.f.e -side top -fill x -expand true -pady 5 label $win.f.e.l -text [tt "Email:"] pack $win.f.e.l -side left ! entry $win.f.e.e -width 30 -relief sunken -background [option get [cw] entryBackground Sdr] -textvariable prefs(pers_email) pack $win.f.e.e -side right frame $win.f.p pack $win.f.p -side top -fill x -expand true -pady 5 label $win.f.p.l -text [tt "Phone:"] pack $win.f.p.l -side left ! entry $win.f.p.e -width 30 -relief sunken -background [option get [cw] entryBackground Sdr] -textvariable prefs(pers_phone) pack $win.f.p.e -side right ! message $win.f.sipa -aspect 400 -font [option get [cw] infoFont Sdr] -text \ "A SIP alias is a name people can put in a session invitation to call you. Normally they will use your username, but if you want sdr to answer calls addressed to a more human-readable name, you can add it here. You cannot add another valid username." pack $win.f.sipa -side top frame $win.f.a pack $win.f.a -side top -fill x -expand true -pady 5 label $win.f.a.l -text [tt "SIP Alias:"] pack $win.f.a.l -side left ! entry $win.f.a.e -width 30 -relief sunken -background [option get [cw] entryBackground Sdr] -textvariable prefs(pers_alias) pack $win.f.a.e -side right frame $win.f.ss pack $win.f.ss -side top -fill x -expand true -pady 5 label $win.f.ss.l -text [tt "SIP Server URL:"] pack $win.f.ss.l -side left ! entry $win.f.ss.e -width 30 -relief sunken -background [option get [cw] entryBackground Sdr] -textvariable prefs(pers_sipserv) pack $win.f.ss.e -side right frame $win.f2 -borderwidth 0 -relief flat -width 1 -height \ *************** *** 3309,3316 **** give_status_msg [tt "Preferences Saved"] } ! proc help {} { global balloonHelp catch {destroy .help} sdr_toplevel .help "Help" posn_win .help --- 3376,3384 ---- give_status_msg [tt "Preferences Saved"] } ! proc help {w} { global balloonHelp + setcw $w catch {destroy .help} sdr_toplevel .help "Help" posn_win .help *************** *** 3397,3404 **** -highlightthickness 0 #TBD ! # -foreground [option get . scrollbarForeground Sdr] \ ! # -activeforeground [option get . scrollbarActiveForeground Sdr] foreach aid $prefs(show_aids) { $win.f1.l1 insert end $ldata($aid,session) if {$prefs(show_aid_$aid)==1} { --- 3465,3472 ---- -highlightthickness 0 #TBD ! # -foreground [option get [cw] scrollbarForeground Sdr] \ ! # -activeforeground [option get [cw] scrollbarActiveForeground Sdr] foreach aid $prefs(show_aids) { $win.f1.l1 insert end $ldata($aid,session) if {$prefs(show_aid_$aid)==1} { *************** *** 3443,3453 **** proc pref_sess_enable {win} { global prefs if {$prefs(show_showwhich)=="pref"} { ! $win.f1.l1 configure -foreground [option get . foreground Sdr] ! $win.f1.l2 configure -foreground [option get . foreground Sdr] } else { ! $win.f1.l1 configure -foreground [option get . disabledForeground Sdr] ! $win.f1.l2 configure -foreground [option get . disabledForeground Sdr] } } --- 3511,3521 ---- proc pref_sess_enable {win} { global prefs if {$prefs(show_showwhich)=="pref"} { ! $win.f1.l1 configure -foreground [option get [cw] foreground Sdr] ! $win.f1.l2 configure -foreground [option get [cw] foreground Sdr] } else { ! $win.f1.l1 configure -foreground [option get [cw] disabledForeground Sdr] ! $win.f1.l2 configure -foreground [option get [cw] disabledForeground Sdr] } } *************** *** 3474,3480 **** #note this must be done after all admin scope zones have been added. #this must not be called more than once! # ! global zone set no_of_zones $zone(no_of_zones) set zone(sap_addr,$no_of_zones) $sap_addr set zone(sap_port,$no_of_zones) $sap_port --- 3542,3549 ---- #note this must be done after all admin scope zones have been added. #this must not be called more than once! # ! global windowForGroupPort zone ! set windowForGroupPort($sap_addr,$sap_port) [cw] set no_of_zones $zone(no_of_zones) set zone(sap_addr,$no_of_zones) $sap_addr set zone(sap_port,$no_of_zones) $sap_port *************** *** 3490,3496 **** #an old one. #to remove one, specify its name and set sap_addr to "" # ! global zone set no_of_zones $zone(no_of_zones) for {set i 0} {$i < $no_of_zones} {incr i} { if {$zone(name,$i)==$name} { --- 3559,3566 ---- #an old one. #to remove one, specify its name and set sap_addr to "" # ! global windowForGroupPort zone ! set windowForGroupPort($sap_addr,$sap_port) [cw] set no_of_zones $zone(no_of_zones) for {set i 0} {$i < $no_of_zones} {incr i} { if {$zone(name,$i)==$name} { *************** *** 3527,3532 **** --- 3597,3657 ---- proc sdr_delete_session_hook {advert} { } + proc launch_directory {addr port ttl dirName} { + global windowForGroupPort + + # If we don't yet have a window open for the directory's (group,port), + # then open one now: + if {![info exists windowForGroupPort($addr,$port)]} { + set oldCW [cw] + global lastWindowNum + set newWindow .w[incr lastWindowNum] + set windowForGroupPort($addr,$port) $newWindow + + # Create the new window: + setcw $newWindow + build_interface again $dirName + + # Enter any members that we saw earlier, but couldn't enter back then: + global entryForGroupPort + foreach gpa [array names entryForGroupPort [set addr],[set port],*] { + set aid $entryForGroupPort($gpa) + display_session $aid 0 + } + setcw $oldCW + + # Set up the 'zone' information for this directory, to be used when + # new sessions are created in it. + # Begin with the original set of zones: + global zone; array set newZoneData [array get zone] + + # Then, remove all zones that don't enclose this dir's SAP addr ($addr) + + # Then, replace each remaining zone's SAP address and port with ours: + foreach a [array names newZoneData sap_addr,*] { + set newZoneData($a) $addr + } + foreach p [array names newZoneData sap_port,*] { + set newZoneData($p) $port + } + # Set each zone's TTL to be no larger than ours: + for {set i 0} {$i <= $newZoneData(no_of_zones)} {incr i} { + if {![info exists newZoneData(ttl,$i)] + || $newZoneData(ttl,$i) > $ttl} { + set newZoneData(ttl,$i) $ttl + } + } + + # Remember this new zone data: + global zoneDataForWindow + set zoneDataForWindow($newWindow) [array get newZoneData] + + # Finally, start listening to the directory: + sd_listen $addr $port + } + return 1 + } + set fh [font metrics -adobe-courier-bold-r-normal--*-120-*-*-m-*-iso8859-1 -linespace] set fw [font measure -adobe-courier-bold-r-normal--*-120-*-*-m-*-iso8859-1 m] set font -adobe-courier-bold-r-normal--*-120-*-*-m-*-iso8859-1 *************** *** 3552,3559 **** set ending($i) "rd" } ! proc calendar {} { global ldata fullix fullnumitems daysinmonth taglist fh fw font ifstyle catch {destroy .cal} catch {unset taglist} sdr_toplevel .cal "Daily Listings" "Calendar" --- 3677,3685 ---- set ending($i) "rd" } ! proc calendar {w} { global ldata fullix fullnumitems daysinmonth taglist fh fw font ifstyle + setcw $w catch {destroy .cal} catch {unset taglist} sdr_toplevel .cal "Daily Listings" "Calendar" *************** *** 3561,3567 **** frame .cal.f0 -borderwidth 2 -relief groove if {$ifstyle(labels)=="long"} { label .cal.f0.l -text "Click on a day to show what's on." \ ! -anchor w -font [option get . infoFont Sdr] pack .cal.f0.l -side top -fill x -expand true } --- 3687,3693 ---- frame .cal.f0 -borderwidth 2 -relief groove if {$ifstyle(labels)=="long"} { label .cal.f0.l -text "Click on a day to show what's on." \ ! -anchor w -font [option get [cw] infoFont Sdr] pack .cal.f0.l -side top -fill x -expand true } *************** *** 3572,3578 **** have sessions scheduled. Click on a date to get the listing for that \ day."] ! set fg [option get . foreground Sdr] set tstr [gettimenow] set daynow [fixint [lindex $tstr 2]] set monnow [fixint [lindex $tstr 1]] --- 3698,3704 ---- have sessions scheduled. Click on a date to get the listing for that \ day."] ! set fg [option get [cw] foreground Sdr] set tstr [gettimenow] set daynow [fixint [lindex $tstr 2]] set monnow [fixint [lindex $tstr 1]] *************** *** 3671,3677 **** set eom [lindex $daysinmonth [expr $mon - 1]] } for {set day $som} {$day <= $eom} {incr day} { ! catch { highlight_day $day $mon $syear $first([expr $mon+0]) $monnow [option get . activeBackground Sdr] [option get . hotForeground Sdr] \"$aid\" $t -1 -1} } } } else { --- 3797,3803 ---- set eom [lindex $daysinmonth [expr $mon - 1]] } for {set day $som} {$day <= $eom} {incr day} { ! catch { highlight_day $day $mon $syear $first([expr $mon+0]) $monnow [option get [cw] activeBackground Sdr] [option get [cw] hotForeground Sdr] \"$aid\" $t -1 -1} } } } else { *************** *** 3737,3743 **** set eom [lindex $daysinmonth [expr $mon - 1]] } for {set day $som} {$day <= $eom} {incr day} { ! catch { highlight_day $day $mon $syear $first([expr $mon+0]) $monnow [option get . activeBackground Sdr] [option get . hotForeground Sdr] \"$aid\" $t $r $rctr $o} } } set starttime [expr $starttime + $ldata($aid,time$t,interval$r)] --- 3863,3869 ---- set eom [lindex $daysinmonth [expr $mon - 1]] } for {set day $som} {$day <= $eom} {incr day} { ! catch { highlight_day $day $mon $syear $first([expr $mon+0]) $monnow [option get [cw] activeBackground Sdr] [option get [cw] hotForeground Sdr] \"$aid\" $t $r $rctr $o} } } set starttime [expr $starttime + $ldata($aid,time$t,interval$r)] *************** *** 3774,3790 **** .cal.f0.c addtag $day.$mon withtag \ [.cal.f0.c create rectangle [expr $xpos - 2] $ypos \ [expr $xpos + ($fw*2) +2] [expr $ypos + $fh - 1] -fill $col \ ! -outline [option get . foreground Sdr]] .cal.f0.c addtag t.$day.$mon withtag \ [.cal.f0.c create text $xpos $ypos -anchor nw \ ! -fill [option get . hotForeground Sdr] -font $font \ -text "$daystr"] set taglist($day.$mon) "$aid $tindex $rindex $rctr $off" .cal.f0.c bind t.$day.$mon <1> \ "display_bookings $dow $day $mon $yr \$taglist($day.$mon)" .cal.f0.c bind t.$day.$mon \ ".cal.f0.c itemconfigure t.$day.$mon -fill \ ! [option get . activehotForeground Sdr]" .cal.f0.c bind t.$day.$mon \ ".cal.f0.c itemconfigure t.$day.$mon -fill $fgcol" } else { --- 3900,3916 ---- .cal.f0.c addtag $day.$mon withtag \ [.cal.f0.c create rectangle [expr $xpos - 2] $ypos \ [expr $xpos + ($fw*2) +2] [expr $ypos + $fh - 1] -fill $col \ ! -outline [option get [cw] foreground Sdr]] .cal.f0.c addtag t.$day.$mon withtag \ [.cal.f0.c create text $xpos $ypos -anchor nw \ ! -fill [option get [cw] hotForeground Sdr] -font $font \ -text "$daystr"] set taglist($day.$mon) "$aid $tindex $rindex $rctr $off" .cal.f0.c bind t.$day.$mon <1> \ "display_bookings $dow $day $mon $yr \$taglist($day.$mon)" .cal.f0.c bind t.$day.$mon \ ".cal.f0.c itemconfigure t.$day.$mon -fill \ ! [option get [cw] activehotForeground Sdr]" .cal.f0.c bind t.$day.$mon \ ".cal.f0.c itemconfigure t.$day.$mon -fill $fgcol" } else { *************** *** 3801,3809 **** set title \ "[tt "Sessions on"] $dow $day$ending($day) [getmonname $mon -long]" set blist [split $bookings "\n"] ! set fg [option get . foreground Sdr] ! set hotfg [option get . hotForeground Sdr] ! set ahotfg [option get . activehotForeground Sdr] set booknum 0 set aid "" foreach booking $blist { --- 3927,3935 ---- set title \ "[tt "Sessions on"] $dow $day$ending($day) [getmonname $mon -long]" set blist [split $bookings "\n"] ! set fg [option get [cw] foreground Sdr] ! set hotfg [option get [cw] hotForeground Sdr] ! set ahotfg [option get [cw] activehotForeground Sdr] set booknum 0 set aid "" foreach booking $blist { *************** *** 3822,3828 **** pack $win.f.f -side top -fill x -expand true label $win.f.f.l -text $title pack $win.f.f.l -side left ! label $win.f.f.exp -font [option get . infoFont Sdr] -text "" \ -justify l -anchor w pack $win.f.f.exp -side left -fill x -expand true if {$ifstyle(labels)=="long"} { --- 3948,3954 ---- pack $win.f.f -side top -fill x -expand true label $win.f.f.l -text $title pack $win.f.f.l -side left ! label $win.f.f.exp -font [option get [cw] infoFont Sdr] -text "" \ -justify l -anchor w pack $win.f.f.exp -side left -fill x -expand true if {$ifstyle(labels)=="long"} { *************** *** 3833,3839 **** for {set t 0} {$t < 24} {incr t} { $win.f.c addtag hour$t withtag \ [$win.f.c create text [expr ($t * 20)+10] 5 -anchor n\ ! -fill $fg -font [option get . font Sdr]] $win.f.c create line [expr ($t * 20) +20 ] 20\ [expr ($t * 20) +20 ] 30 -fill $fg $win.f.c create line [expr ($t * 20) +10 ] 20\ --- 3959,3965 ---- for {set t 0} {$t < 24} {incr t} { $win.f.c addtag hour$t withtag \ [$win.f.c create text [expr ($t * 20)+10] 5 -anchor n\ ! -fill $fg -font [option get [cw] font Sdr]] $win.f.c create line [expr ($t * 20) +20 ] 20\ [expr ($t * 20) +20 ] 30 -fill $fg $win.f.c create line [expr ($t * 20) +10 ] 20\ *************** *** 3953,3959 **** $win.f.c addtag t$lnum withtag \ [$win.f.c create text 495 \ [expr 25+$lnum] -anchor w\ ! -fill $hotfg -font [option get . font Sdr]] $win.f.c insert t$lnum 0 $ldata($aid,session) $win.f.c bind t$lnum <1> "popup $aid \$ifstyle(view) advert" $win.f.c bind t$lnum \ --- 4079,4085 ---- $win.f.c addtag t$lnum withtag \ [$win.f.c create text 495 \ [expr 25+$lnum] -anchor w\ ! -fill $hotfg -font [option get [cw] font Sdr]] $win.f.c insert t$lnum 0 $ldata($aid,session) $win.f.c bind t$lnum <1> "popup $aid \$ifstyle(view) advert" $win.f.c bind t$lnum \ *************** *** 3967,3973 **** } } button $win.f.f.dismiss -text "[tt Hide] $day [getmonname $mon -long]" \ ! -command "destroy $win" -font [option get . infoFont Sdr] \ -borderwidth 1 -relief raised -pady 0 -padx 1 \ -highlightthickness 0 pack $win.f.f.dismiss -side right --- 4093,4099 ---- } } button $win.f.f.dismiss -text "[tt Hide] $day [getmonname $mon -long]" \ ! -command "destroy $win" -font [option get [cw] infoFont Sdr] \ -borderwidth 1 -relief raised -pady 0 -padx 1 \ -highlightthickness 0 pack $win.f.f.dismiss -side right *************** *** 4248,4254 **** incr $win.visible -1 if {[set $win.visible]==0} {pack forget $win.buttons} frame $win.authinfo -borderwidth 2 -relief groove ! set mf [option get . mediumFont Sdr] pack $win.authinfo -side top -fill x -after $win.hidden2 message $win.authinfo.authmsg -aspect 600 -text "Authentication Information: $authm " -font $mf -bg $bgcolour pack $win.authinfo.authmsg -side top -expand true --- 4374,4380 ---- incr $win.visible -1 if {[set $win.visible]==0} {pack forget $win.buttons} frame $win.authinfo -borderwidth 2 -relief groove ! set mf [option get [cw] mediumFont Sdr] pack $win.authinfo -side top -fill x -after $win.hidden2 message $win.authinfo.authmsg -aspect 600 -text "Authentication Information: $authm " -font $mf -bg $bgcolour pack $win.authinfo.authmsg -side top -expand true *************** *** 4260,4266 **** incr $win.visible -1 if {[set $win.visible]==0} {pack forget $win.buttons} frame $win.encinfo -borderwidth 2 -relief groove ! set mf [option get . mediumFont Sdr] pack $win.encinfo -side top -fill x -after $win.hidden2 message $win.encinfo.encmsg -aspect 800 -text "Encryption Information: $encm " -font $mf -bg $bgcolour pack $win.encinfo.encmsg -side top -expand true --- 4386,4392 ---- incr $win.visible -1 if {[set $win.visible]==0} {pack forget $win.buttons} frame $win.encinfo -borderwidth 2 -relief groove ! set mf [option get [cw] mediumFont Sdr] pack $win.encinfo -side top -fill x -after $win.hidden2 message $win.encinfo.encmsg -aspect 800 -text "Encryption Information: $encm " -font $mf -bg $bgcolour pack $win.encinfo.encmsg -side top -expand true *************** *** 4353,4358 **** --- 4479,4485 ---- add_admin "World (ttl 127)" 224.2.127.254 9875 224.2.128.0 17 127 # add_admin sap_addr sap_port base_addr netmask ttl add_ttl_scope 224.2.127.254 9875 224.2.128.0 17 + set zoneDataForWindow([cw]) [array get zone] #create the interface build_interface first