[PD-cvs] SF.net SVN: pure-data:[10659] branches/pd-devel/0.41.4

eighthave at users.sourceforge.net eighthave at users.sourceforge.net
Tue Jan 27 07:11:58 CET 2009


Revision: 10659
          http://pure-data.svn.sourceforge.net/pure-data/?rev=10659&view=rev
Author:   eighthave
Date:     2009-01-27 06:11:58 +0000 (Tue, 27 Jan 2009)

Log Message:
-----------
- got the canvas popup menu working, with Help, Open, and Properties working

- included iemgui code and got the properties panel to popup correctly

- setup CanvasWindow toplevel class to bind to in order to get events only
  from the toplevel window, not anything that is in that window.  Binding a
  classname is not recursive, but binding to a toplevel or canvas is.

Modified Paths:
--------------
    branches/pd-devel/0.41.4/devel_doc/TODO
    branches/pd-devel/0.41.4/src/pd.tk
    branches/pd-devel/0.41.4/src/pd_bindings.tcl
    branches/pd-devel/0.41.4/src/pd_connect.tcl
    branches/pd-devel/0.41.4/src/pd_iemgui.tcl
    branches/pd-devel/0.41.4/src/pdtk_canvas.tcl
    branches/pd-devel/0.41.4/src/wheredoesthisgo.tcl

Modified: branches/pd-devel/0.41.4/devel_doc/TODO
===================================================================
--- branches/pd-devel/0.41.4/devel_doc/TODO	2009-01-27 00:21:35 UTC (rev 10658)
+++ branches/pd-devel/0.41.4/devel_doc/TODO	2009-01-27 06:11:58 UTC (rev 10659)
@@ -4,6 +4,7 @@
 [ ] performance testing to make sure the Tcl networking is up to snuff
 [ ] overall naming/organization scheme for variables, functions, and packages
 [ ] implement checking to see if another Pd is already running follwoing this code example: http://tcl.tk/man/tcl8.4/TkCmd/send.htm
+[ ] search path for startup.tcl and load, this is a file for GUI customizations
 
 
 gui logic
@@ -38,6 +39,7 @@
 [ ] streamline pdsend_key and the C side of things, using %N
 [ ] implement [wm attributes -titlepath] on Mac OS X and change pdsend_map
 [ ] move sys_font setting from 'pd' to 'pd-gui', probably in pdtk_pd_startup
+[ ] switch pdtk_canvas_getscroll to mytoplevel and bind <Configure> to a -class
 
 - switch to using toplevel classes instead of creating the bindings each time
   bind MyCanvas
@@ -64,4 +66,3 @@
 [2:12pm] ijchain: <patthoyts> Instead you can do the binding to the class name once in the initialization for the application.
 [2:13pm] ijchain: <patthoyts> Then any toplevel created with that class will automatically get the correct bindings.
 [2:14pm] ijchain: <patthoyts> If you look at the code in tk/library/*.tcl where the widget bindings are all setup you can see thats how its done for Tk's own stuff. Mostly anyway.
-[2:15pm] hans_: thanks, very helpfuil!

Modified: branches/pd-devel/0.41.4/src/pd.tk
===================================================================
--- branches/pd-devel/0.41.4/src/pd.tk	2009-01-27 00:21:35 UTC (rev 10658)
+++ branches/pd-devel/0.41.4/src/pd.tk	2009-01-27 06:11:58 UTC (rev 10659)
@@ -55,6 +55,7 @@
 package require pd_menus
 package require pd_bindings
 package require pd_post
+package require pd_iemgui
 package require pdtk_canvas
 package require pdtk_text
 # TODO eliminate this kludge:
@@ -63,8 +64,8 @@
 # import into the global namespace for backwards compatibility
 namespace import ::pd_post::pdtk_post
 namespace import ::pd_connect::pdsend
+namespace import ::pd_iemgui::pdtk_iemgui_dialog
 
-
 #------------------------------------------------------------------------------#
 # coding style
 #
@@ -159,6 +160,7 @@
         }
     }
 
+# TODO the fonts picked seem too small
     foreach {size width height} $::font_fixed_metrics {
         set myfont [pdtk_font_name $size]
         font create $myfont -family $::font_family -weight $::font_weight \
@@ -216,7 +218,39 @@
 	# TODO check to see if the requested font exists using [font families]
 }
 
+proc check_for_running_instances {} {
+## http://tcl.tk/man/tcl8.4/TkCmd/send.htm
+## This script fragment can be used to make an application that only  
+## runs once on a particular display.
+#
+#if {[tk appname FoobarApp] ne "FoobarApp"} {
+#   send -async FoobarApp RemoteStart $argv
+#   exit
+#}
+## The command that will be called remotely, which raises
+## the application main window and opens the requested files
+#proc RemoteStart args {
+#   raise .
+#   foreach filename $args {
+#       OpenFile $filename
+#   }
+#}
+}
 
+proc create_pdwindow {} {
+	::pd_menus::create_menubar .menubar
+	. configure -menu .menubar -width 400 -height 250
+	::pd_menus::configure_pdwindow .menubar
+	::pd_bindings::pdwindow_bindings .
+
+	# TODO move this to its own proc for clarity
+	wm title . "Pd-devel"
+	wm geometry . +500+50
+	frame .placeholder
+	label .placeholder.label -text "Pd window placeholder" -width 50 -height 15
+	pack .placeholder.label .placeholder -side top -expand yes -fill both
+}
+
 # ------------------------------------------------------------------------------
 # main
 proc main {argc argv} {
@@ -224,28 +258,18 @@
 	catch {console show}
 	post_tclinfo
 	pdtk_post "Starting pd.tk with main($argc $argv)"
+	check_for_running_instances
 	init
 
 	# no english support yet, so I am commenting this out
 	#if {![info exists cmd_ops(lang)]} {set cmd_ops(lang) "en"}
 	#init_locale
 
+	create_pdwindow
+
 	# TODO check args for -stderr and set pdtk_post accordingly
-
-	::pd_menus::create_menubar .menubar
-	. configure -menu .menubar -width 400 -height 250
-	::pd_menus::configure_pdwindow .menubar
-	::pd_bindings::pdwindow_bindings .
-
-	# TODO move this to its own proc for clarity
-	wm title . "Pd-devel"
-	wm geometry . +500+50
-	frame .placeholder
-	label .placeholder.label -text "Pd window placeholder" -width 50 -height 15
-	pack .placeholder.label .placeholder -side top -expand yes -fill both
-
 	if { $argc == 1 && [string is int [lindex $argv 0]]} {
-		# 'pd' started first and launched us, so get the port to connect to
+        # 'pd' started first and launched us, so get the port to connect to
 		::pd_connect::to_pd [lindex $argv 0]
 	} else {
 		# the GUI is starting first, so create socket and exec 'pd'
@@ -254,6 +278,7 @@
 		exec -- $pd_exec -guiport $portnumber &
 		#TODO add vwait so that pd-gui will exit if pd never shows up
 	}
+	::pd_bindings::class_bindings
 }
 
 main $::argc $::argv

Modified: branches/pd-devel/0.41.4/src/pd_bindings.tcl
===================================================================
--- branches/pd-devel/0.41.4/src/pd_bindings.tcl	2009-01-27 00:21:35 UTC (rev 10658)
+++ branches/pd-devel/0.41.4/src/pd_bindings.tcl	2009-01-27 06:11:58 UTC (rev 10659)
@@ -11,6 +11,19 @@
 	namespace export canvas_bindings
 }
 
+proc ::pd_bindings::class_bindings {} {
+    # binding by class is not recursive, so its useful for certain things
+    bind CanvasWindow <Map>                    "pdsend_map %W"
+    bind CanvasWindow <Unmap>                  "pdsend_unmap %W"
+    bind CanvasWindow <Configure>              "pdtk_canvas_getscroll %W"
+
+	# event bindings -----------------------------------------------------------
+
+	# do window maintenance when entering a window (Window menu, scrollbars...)
+	# maybe use WM_TAKE_FOCUS for this?
+	#bind CanvasWindow <FocusIn> {pdtk_canvaswindowmaintenance}
+}
+
 proc ::pd_bindings::window_bindings {mytoplevel} {
 	variable modifier
 
@@ -130,13 +143,13 @@
     bind $mycanvas <Motion>               "pdtk_canvas_motion %W %x %y 0"
     bind $mycanvas <Button-1>             "pdtk_canvas_mouse %W %x %y %b 0"
     bind $mycanvas <ButtonRelease-1>      "pdtk_canvas_mouseup %W %x %y %b"
-	bind $mycanvas <$modifier-Button-1>   "pdtk_canvas_mouse %W %x %y %b 0"
+	bind $mycanvas <$modifier-Button-1>   "pdtk_canvas_mouse %W %x %y %b 2"
 	# TODO look into "virtual events' for a means for getting Shift-Button, etc.
-	switch {$::windowingsystem} { 
+	switch -- $::windowingsystem { 
 		"aqua" {
 			bind $mycanvas <Button-2>      "pdtk_canvas_rightclick %W %x %y %b"
-			# on Mac OS X, emulate a rightclick with Ctrl-click
-			bind $mycanvas <Ctrl-Button-1> "pdtk_canvas_rightclick %W %x %y %b"
+			# on Mac OS X, make a rightclick with Ctrl-click for 1 button mice
+			bind $mycanvas <Control-Button-1> "pdtk_canvas_rightclick %W %x %y %b"
 			# TODO try replacing the above with this
 			#bind all <Control-Button-1> {event generate %W <Button-2> \
 			#									  -x %x -y %y -rootx %X -rooty %Y \
@@ -151,15 +164,6 @@
 	}
 	#TODO bind $mytoplevel <MouseWheel>
 
-	# event bindings -----------------------------------------------------------
-    bind $mytoplevel <Map>                    "pdsend_map %W"
-    bind $mytoplevel <Unmap>                  "pdsend_unmap %W"
-	#TODO bind $mytoplevel <Configure>             "pdtk_canvas_getscroll %W"
-
-	# do window maintenance when entering a window (Window menu, scrollbars...)
-	# maybe use WM_TAKE_FOCUS for this?
-	#bind $mytoplevel <FocusIn> {pdtk_canvaswindowmaintenance}
-
 	# window protocol bindings
     wm protocol $mytoplevel WM_DELETE_WINDOW "pdsend \"$mytoplevel menuclose 0\""
 }

Modified: branches/pd-devel/0.41.4/src/pd_connect.tcl
===================================================================
--- branches/pd-devel/0.41.4/src/pd_connect.tcl	2009-01-27 00:21:35 UTC (rev 10658)
+++ branches/pd-devel/0.41.4/src/pd_connect.tcl	2009-01-27 06:11:58 UTC (rev 10659)
@@ -67,7 +67,6 @@
 		exit
 	} 
 	append cmd_from_pd [read $pd_socket]
-	puts stderr "cmd_from_pd: $cmd_from_pd"
 	if {[catch {uplevel #0 $cmd_from_pd} errorname]} {
 		global errorInfo
 		puts stderr "errorname: >>$errorname<<"

Modified: branches/pd-devel/0.41.4/src/pd_iemgui.tcl
===================================================================
--- branches/pd-devel/0.41.4/src/pd_iemgui.tcl	2009-01-27 00:21:35 UTC (rev 10658)
+++ branches/pd-devel/0.41.4/src/pd_iemgui.tcl	2009-01-27 06:11:58 UTC (rev 10659)
@@ -3,6 +3,7 @@
 # Copyright (c) 1997-2009 Miller Puckette.
 
 package provide pd_iemgui 0.1
+
 namespace eval ::pd_iemgui:: {
 	variable define_min_flashhold 50
 	variable define_min_flashbreak 10
@@ -221,21 +222,21 @@
 	
     set var_iemgui_lin0_log1 [concat iemgui_lin0_log1_$vid]
     global $var_iemgui_lin0_log1
-    set var_::pd_iemgui::lilo0 [concat ::pd_iemgui::lilo0_$vid]
-    global $var_::pd_iemgui::lilo0
-    set var_::pd_iemgui::lilo1 [concat ::pd_iemgui::lilo1_$vid]
-    global $var_::pd_iemgui::lilo1
+    set var_iemgui_lilo0 [concat iemgui_lilo0_$vid]
+    global $var_iemgui_lilo0
+    set var_iemgui_lilo1 [concat iemgui_lilo1_$vid]
+    global $var_iemgui_lilo1
 	
     ::pd_iemgui::sched_rng $id
 	
     if {[eval concat $$var_iemgui_lin0_log1] == 0} {
         set $var_iemgui_lin0_log1 1
-        $id.para.lilo configure -text [eval concat $$var_::pd_iemgui::lilo1]
+        $id.para.lilo configure -text [eval concat $$var_iemgui_lilo1]
         ::pd_iemgui::verify_rng $id
         ::pd_iemgui::sched_rng $id
     } else {
         set $var_iemgui_lin0_log1 0
-        $id.para.lilo configure -text [eval concat $$var_::pd_iemgui::lilo0]
+        $id.para.lilo configure -text [eval concat $$var_iemgui_lilo0]
     }
 }
 
@@ -244,16 +245,15 @@
 	
     set var_iemgui_gn_f [concat iemgui_gn_f_$vid]
     global $var_iemgui_gn_f
-	global fontname fontweight
     
     set $var_iemgui_gn_f $gn_f
 	
 	switch -- $gn_f {
-		0 { set current_font $fontname}
+		0 { set current_font $::font_family}
 		1 { set current_font "Helvetica" }
 		2 { set current_font "Times" }
 	}
-	set current_font_spec "{$current_font} 12 $fontweight"
+	set current_font_spec "{$current_font} 12 $::font_weight"
 	
 	$id.label.fontpopup_label configure -text $current_font \
 		-font $current_font_spec
@@ -309,10 +309,10 @@
     global $var_iemgui_max_rng
     set var_iemgui_lin0_log1 [concat iemgui_lin0_log1_$vid]
     global $var_iemgui_lin0_log1
-    set var_::pd_iemgui::lilo0 [concat ::pd_iemgui::lilo0_$vid]
-    global $var_::pd_iemgui::lilo0
-    set var_::pd_iemgui::lilo1 [concat ::pd_iemgui::lilo1_$vid]
-    global $var_::pd_iemgui::lilo1
+    set var_iemgui_lilo0 [concat iemgui_lilo0_$vid]
+    global $var_iemgui_lilo0
+    set var_iemgui_lilo1 [concat iemgui_lilo1_$vid]
+    global $var_iemgui_lilo1
     set var_iemgui_loadbang [concat iemgui_loadbang_$vid]
     global $var_iemgui_loadbang
     set var_iemgui_num [concat iemgui_num_$vid]
@@ -360,9 +360,9 @@
     if {[string index $hhhgui_nam 0] == "$"} {
 		set hhhgui_nam [string replace $hhhgui_nam 0 0 #] }
     
-    set hhhsnd [pdtk_unspace $hhhsnd]
-    set hhhrcv [pdtk_unspace $hhhrcv]
-    set hhhgui_nam [pdtk_unspace $hhhgui_nam]
+    set hhhsnd [unspace_text $hhhsnd]
+    set hhhrcv [unspace_text $hhhrcv]
+    set hhhgui_nam [unspace_text $hhhgui_nam]
     
     pdsend [concat $id dialog \
 			[eval concat $$var_iemgui_wdt] \
@@ -385,7 +385,9 @@
 			[eval concat $$var_iemgui_steady]]
 }
 
-proc ::pd_iemgui::cancel {id} {pdsend "$id cancel"}
+proc ::pd_iemgui::cancel {id} {
+	pdsend "$id cancel"
+}
 
 proc ::pd_iemgui::ok {id} {
     ::pd_iemgui::apply $id
@@ -406,9 +408,6 @@
 	
     set vid [string trimleft $id .]
 	
-	global pd_nt
-	global fontname fontweight
-	
     set var_iemgui_wdt [concat iemgui_wdt_$vid]
     global $var_iemgui_wdt
     set var_iemgui_min_wdt [concat iemgui_min_wdt_$vid]
@@ -425,10 +424,10 @@
     global $var_iemgui_rng_sch
     set var_iemgui_lin0_log1 [concat iemgui_lin0_log1_$vid]
     global $var_iemgui_lin0_log1
-    set var_::pd_iemgui::lilo0 [concat ::pd_iemgui::lilo0_$vid]
-    global $var_::pd_iemgui::lilo0
-    set var_::pd_iemgui::lilo1 [concat ::pd_iemgui::lilo1_$vid]
-    global $var_::pd_iemgui::lilo1
+    set var_iemgui_lilo0 [concat iemgui_lilo0_$vid]
+    global $var_iemgui_lilo0
+    set var_iemgui_lilo1 [concat iemgui_lilo1_$vid]
+    global $var_iemgui_lilo1
     set var_iemgui_loadbang [concat iemgui_loadbang_$vid]
     global $var_iemgui_loadbang
     set var_iemgui_num [concat iemgui_num_$vid]
@@ -466,8 +465,8 @@
     set $var_iemgui_max_rng $max_rng
     set $var_iemgui_rng_sch $rng_sched
     set $var_iemgui_lin0_log1 $lin0_log1
-    set $var_::pd_iemgui::lilo0 $lilo0_label
-    set $var_::pd_iemgui::lilo1 $lilo1_label
+    set $var_iemgui_lilo0 $lilo0_label
+    set $var_iemgui_lilo1 $lilo1_label
     set $var_iemgui_loadbang $loadbang
     set $var_iemgui_num $num
     set $var_iemgui_steady $steady
@@ -538,9 +537,9 @@
     label $id.para.dummy2 -text "" -width 1
     label $id.para.dummy3 -text "" -width 1
     if {[eval concat $$var_iemgui_lin0_log1] == 0} {
-        button $id.para.lilo -text [eval concat $$var_::pd_iemgui::lilo0] -width 5 -command "::pd_iemgui::lilo $id" }
+        button $id.para.lilo -text [eval concat $$var_iemgui_lilo0] -width 5 -command "::pd_iemgui::lilo $id" }
     if {[eval concat $$var_iemgui_lin0_log1] == 1} {
-        button $id.para.lilo -text [eval concat $$var_::pd_iemgui::lilo1] -width 5 -command "::pd_iemgui::lilo $id" }
+        button $id.para.lilo -text [eval concat $$var_iemgui_lilo1] -width 5 -command "::pd_iemgui::lilo $id" }
     if {[eval concat $$var_iemgui_loadbang] == 0} {
         button $id.para.lb -text "no init" -width 5 -command "::pd_iemgui::lb $id" }
     if {[eval concat $$var_iemgui_loadbang] == 1} {
@@ -581,7 +580,7 @@
         pack $id.s_r.receive.lab $id.s_r.receive.ent -side left}
     
 	# get the current font name from the int given from C-space (gn_f)
-	set current_font $fontname
+	set current_font $::font_family
     if {[eval concat $$var_iemgui_gn_f] == 1} \
 		{ set current_font "Helvetica" }
     if {[eval concat $$var_iemgui_gn_f] == 2} \
@@ -594,7 +593,7 @@
 		-font highlight_font
 	pack $id.label -side top -fill x
     entry $id.label.name_entry -textvariable $var_iemgui_gui_nam -width 30 \
-		-font [list $current_font 12 $fontweight]
+		-font [list $current_font 12 $::font_weight]
     pack $id.label.name_entry -side top -expand yes -fill both -padx 5
     
     frame $id.label.xy -padx 27 -pady 1
@@ -608,7 +607,7 @@
 		$id.label.xy.y_lab $id.label.xy.y_entry -side left -anchor e
     
 	label $id.label.fontpopup_label -text $current_font \
-		-relief groove -font [list $current_font 12 $fontweight] -padx 5
+		-relief groove -font [list $current_font 12 $::font_weight] -padx 5
     pack $id.label.fontpopup_label -side left -anchor w -expand yes -fill x
     label $id.label.fontsize_label -text "size" -width 4
     entry $id.label.fontsize_entry -textvariable $var_iemgui_gn_fs -width 5
@@ -616,16 +615,16 @@
 		-side right -anchor e -padx 5 -pady 5
 	menu $id.popup
 	$id.popup add command \
-		-label $fontname \
-		-font [format {{%s} 12 %s} $fontname $fontweight] \
+		-label $::font_family \
+		-font [format {{%s} 12 %s} $::font_family $::font_weight] \
 		-command "::pd_iemgui::toggle_font $id 0" 
 	$id.popup add command \
 		-label "Helvetica" \
-		-font [format {Helvetica 12 %s} $fontweight] \
+		-font [format {Helvetica 12 %s} $::font_weight] \
 		-command "::pd_iemgui::toggle_font $id 1" 
 	$id.popup add command \
 		-label "Times" \
-		-font [format {Times 12 %s} $fontweight] \
+		-font [format {Times 12 %s} $::font_weight] \
 		-command "::pd_iemgui::toggle_font $id 2" 
 	bind $id.label.fontpopup_label <Button> \
 		[list tk_popup $id.popup %X %Y]
@@ -663,21 +662,21 @@
 			-activebackground [format "#%6.6x" [eval concat $$var_iemgui_bcol]] \
 			-foreground [format "#%6.6x" [eval concat $$var_iemgui_fcol]] \
 			-activeforeground [format "#%6.6x" [eval concat $$var_iemgui_fcol]] \
-			-font [list $current_font 12 $fontweight] -padx 2 -pady 2 -relief ridge
+			-font [list $current_font 12 $::font_weight] -padx 2 -pady 2 -relief ridge
     } else {
 		label $id.colors.sections.fr_bk -text "o=||=o" -width 6 \
 			-background [format "#%6.6x" [eval concat $$var_iemgui_bcol]] \
 			-activebackground [format "#%6.6x" [eval concat $$var_iemgui_bcol]] \
 			-foreground [format "#%6.6x" [eval concat $$var_iemgui_bcol]] \
 			-activeforeground [format "#%6.6x" [eval concat $$var_iemgui_bcol]] \
-			-font [list $current_font 12 $fontweight] -padx 2 -pady 2 -relief ridge
+			-font [list $current_font 12 $::font_weight] -padx 2 -pady 2 -relief ridge
 	}
 	label $id.colors.sections.lb_bk -text "testlabel" -width 9 \
 		-background [format "#%6.6x" [eval concat $$var_iemgui_bcol]] \
 		-activebackground [format "#%6.6x" [eval concat $$var_iemgui_bcol]] \
 		-foreground [format "#%6.6x" [eval concat $$var_iemgui_lcol]] \
 		-activeforeground [format "#%6.6x" [eval concat $$var_iemgui_lcol]] \
-		-font [list $current_font 12 $fontweight] -padx 2 -pady 2 -relief ridge
+		-font [list $current_font 12 $::font_weight] -padx 2 -pady 2 -relief ridge
     pack $id.colors.sections.lb_bk $id.colors.sections.fr_bk \
 		-side right -anchor e -expand yes -fill both -pady 7
 	

Modified: branches/pd-devel/0.41.4/src/pdtk_canvas.tcl
===================================================================
--- branches/pd-devel/0.41.4/src/pdtk_canvas.tcl	2009-01-27 00:21:35 UTC (rev 10658)
+++ branches/pd-devel/0.41.4/src/pdtk_canvas.tcl	2009-01-27 06:11:58 UTC (rev 10659)
@@ -5,13 +5,16 @@
 
 namespace eval ::pdtk_canvas:: {
 }
+# keep track of the location of the popup
+set popup_xpix 0
+set popup_ypix 0
 
 #------------------------------------------------------------------------------#
 # canvas new/saveas
 
 proc pdtk_canvas_new {mytoplevel width height geometry editable} {
 	# TODO check size of window
-	toplevel $mytoplevel -width $width -height $height
+	toplevel $mytoplevel -width $width -height $height -class CanvasWindow
 	::pd_menus::create_menubar $mytoplevel.menubar
 	$mytoplevel configure -menu $mytoplevel.menubar
 
@@ -100,6 +103,32 @@
 }
 
 #------------------------------------------------------------------------------#
+# canvas popup menu
+
+proc popup_action {name action} {
+	pdsend "$name done-popup $action $::popup_xpix $::popup_ypix"
+}
+
+proc pdtk_canvas_popup {mytoplevel xpix ypix hasproperties hasopen} {
+    set ::popup_xpix $xpix
+    set ::popup_ypix $ypix
+    if {$hasproperties} {
+        $mytoplevel.popup entryconfigure 0 -state normal
+    } else {
+        $mytoplevel.popup entryconfigure 0 -state disabled
+    }
+    if {$hasopen} {
+        $mytoplevel.popup entryconfigure 1 -state normal
+    } else {
+        $mytoplevel.popup entryconfigure 1 -state disabled
+    }
+    set mycanvas "$mytoplevel.c"
+    tk_popup $mytoplevel.popup [expr $xpix + [winfo rootx $mycanvas]] \
+        [expr $ypix + [winfo rooty $mycanvas]] 0
+}
+
+
+#------------------------------------------------------------------------------#
 # procs for canvas events
 
 # "map" event tells us when the canvas becomes visible (arg is "0") or
@@ -120,10 +149,9 @@
 	# TODO make this work
 }
 
-proc pdtk_canvas_getscroll {mytoplevel} {
+proc pdtk_canvas_getscroll {mycanvas} {
 	# TODO make this work
+	# the C code still sends a .c canvas, so get the toplevel
+	set mytoplevel [winfo toplevel $mycanvas]
+	puts stderr "pdtk_canvas_getscroll $mycanvas"
 }
-
-proc pdtk_canvas_checkgeometry {mytoplevel} {
-	# TODO check and relocate window accordingly
-}

Modified: branches/pd-devel/0.41.4/src/wheredoesthisgo.tcl
===================================================================
--- branches/pd-devel/0.41.4/src/wheredoesthisgo.tcl	2009-01-27 00:21:35 UTC (rev 10658)
+++ branches/pd-devel/0.41.4/src/wheredoesthisgo.tcl	2009-01-27 06:11:58 UTC (rev 10659)
@@ -38,7 +38,15 @@
 	string map {"," "\\," ";" "\\;" " " "\\ "} $message
 }
 
+#enquote a string to send it to Pd.  Blow off semi and comma; alias spaces
+#we also blow off "{", "}", "\" because they'll just cause bad trouble later.
+proc unspace_text {x} {
+    set y [string map {" " "_" ";" "" "," "" "{" "" "}" "" "\\" ""} $x]
+    if {$y == ""} {set y "empty"}
+    concat $y
+}
 
+
 #------------------------------------------------------------------------------#
 # key usage
 


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Pd-cvs mailing list