Revision: 10474 http://pure-data.svn.sourceforge.net/pure-data/?rev=10474&view=rev Author: eighthave Date: 2009-01-06 02:22:03 +0000 (Tue, 06 Jan 2009)
Log Message: ----------- - pd now launches the new pd.tk and there is successful communication between pdand pd-gui. Next, I need to make pd_readsocket support inline carriage returns, since currently the eval is called line-by-line.
Modified Paths: -------------- branches/pd-devel/0.41.4/src/makefile.in branches/pd-devel/0.41.4/src/pd.tk branches/pd-devel/0.41.4/src/pd_menucommands.tcl branches/pd-devel/0.41.4/src/pd_menus.tcl branches/pd-devel/0.41.4/src/pkgIndex.tcl
Added Paths: ----------- branches/pd-devel/0.41.4/src/pd_connect.tcl
Modified: branches/pd-devel/0.41.4/src/makefile.in =================================================================== --- branches/pd-devel/0.41.4/src/makefile.in 2009-01-03 09:15:08 UTC (rev 10473) +++ branches/pd-devel/0.41.4/src/makefile.in 2009-01-06 02:22:03 UTC (rev 10474) @@ -84,7 +84,7 @@ .PHONY: pd gui externs all
all: pd $(BIN_DIR)/pd-watchdog gui $(BIN_DIR)/pdsend \ - $(BIN_DIR)/pdreceive $(BIN_DIR)/pd.tk externs + $(BIN_DIR)/pdreceive $(BIN_DIR)/pd.tk
bin: pd $(BIN_DIR)/pd-watchdog gui $(BIN_DIR)/pdsend \ $(BIN_DIR)/pdreceive $(BIN_DIR)/pd.tk @@ -126,8 +126,11 @@ $(BIN_DIR)/pd-gui: $(GOBJ) $(GSRC) cd ../obj; $(CC) $(INCLUDE) -o $(BIN_DIR)/$(GUINAME) $(GOBJ) $(GLIB)
-$(BIN_DIR)/pd.tk: u_main.tk $(BIN_DIR) - cp u_main.tk $(BIN_DIR)/pd.tk +$(BIN_DIR)/pd.tk: $(wildcard *.tcl) $(wildcard locale/*.tcl) $(BIN_DIR) + install pd.tk $(BIN_DIR)/pd.tk + install *.tcl $(BIN_DIR)/ + install -d $(BIN_DIR)/locale + install locale/*.tcl $(BIN_DIR)/locale touch -r makefile.dependencies $(BIN_DIR)
#this is for Max OSX only... @@ -239,9 +242,25 @@
include makefile.dependencies
+TAGS: etags
+etags: + etags *.[ch] + find /usr/include -type f -name *.h -exec etags -a '{}' ; + make etags_`uname -s`
+etags_Darwin: + find /System/Library/Frameworks -type f -name *.h -exec etags -a '{}' ; + find /Library/Frameworks -type f -name *.h -exec etags -a '{}' ; + find /sw/include -type f -name *.h -exec etags -a '{}' ;
+etags_Linux:
+etags_MINGW: + find /usr/local/include/ -type f -name *.h -exec etags -a '{}' ;
+ + + +
Modified: branches/pd-devel/0.41.4/src/pd.tk =================================================================== --- branches/pd-devel/0.41.4/src/pd.tk 2009-01-03 09:15:08 UTC (rev 10473) +++ branches/pd-devel/0.41.4/src/pd.tk 2009-01-06 02:22:03 UTC (rev 10474) @@ -4,33 +4,56 @@ # Copyright (c) 1997-2009 Miller Puckette.
package require Tk + +## replace Tk widgets with Ttk widgets #package require tile - -## replace Tk widgets with Ttk widgets on 8.5 #namespace import -force ttk::*
# set . as first dir in auto_path -set auto_path [linsert $auto_path 0 "/Users/hans/code/pure-data/branches/pd-devel/0.41.4/src"] +#set auto_path [linsert $auto_path 0 "/Users/hans/code/pure-data/branches/pd-devel/0.41.4/src"] set auto_path [linsert $auto_path 0 "."]
+package require pd_connect package require pd_menus package require pd_bindings
+namespace import ::pd_connect::pd + # ------------------------------------------------------------------------------ # global variables # command line options -array set cmd_ops {}
-for {set i 0} {$i < $argc} {incr i} { - global cmd_ops files_to_open - set o [lindex $argv $i] - switch -regexp -- $o { - ^-lang$ {incr i; set cmd_ops(lang) [lindex $argv $i]} - default {lappend files_to_open [lindex $argv $i]} - } + +# for the sake of clarity, I think there should not be any inline code, +# everything should be in a procedure that is ultimately triggered from main() +# -hans@eds.org + +#array set cmd_ops {} + +# the only arg for pd.tk is the port number to connect to 'pd' on, but this +# code would be useful for opening files via drag-n-drop, the open panel, etc. +#for {set i 0} {$i < $argc} {incr i} { +# global cmd_ops files_to_open +# set o [lindex $argv $i] +# switch -regexp -- $o { +# ^-lang$ {incr i; set cmd_ops(lang) [lindex $argv $i]} +# default {lappend files_to_open [lindex $argv $i]} +# } +#} + +# no english support yet, so I am commenting this out +#if {![info exists cmd_ops(lang)]} {set cmd_ops(lang) "en"} +#init_locale + +# ------------------------------------------------------------------------------ +# quoting functions + +# enquote a string to send it to a tcl function +proc pdtk_enquote {x} { + set foo [string map {"," "" ";" "" " ""} $x] + set foo2 [string map {" " "\ "} $foo] + concat $foo2 } -if {![info exists cmd_ops(lang)]} {set cmd_ops(lang) "en"} -init_locale
# ------------------------------------------------------------------------------ # init functions @@ -54,6 +77,20 @@ } }
+ +proc pdtk_pd_startup {version {args ""}} { + pdtk_post "version: $version" + pdtk_post "args: $args" + set oldtclversion 0 + set fontlist "8 5 8 9 6 10 10 7 11 12 7 12 14 8 14 16 10 16 18 11 18 24 14 24 30 18 30 36 22 36" + pd [concat pd init [pdtk_enquote [pwd]] $oldtclversion $fontlist ;]; +} + + +proc pdtk_post {s} { + puts stderr $s +} + # ------------------------------------------------------------------------------ # canvas support functions proc pdtk_canvas_new {canvas_name width height} { @@ -67,7 +104,8 @@
# ------------------------------------------------------------------------------ # main -proc main {} { +proc main {argc argv} { + pdtk_post "Starting pd.tk with main($argc $argv)" init
wm title . "Pd-devel" @@ -76,9 +114,11 @@ . configure -menu .menubar -width 400 -height 250 ::pd_menus::configure_pdwindow .menubar ::pd_bindings::window_bindings . + + ::pd_connect::connect_to_pd [lindex $argv 0] }
-main +main $argc $argv
Added: branches/pd-devel/0.41.4/src/pd_connect.tcl =================================================================== --- branches/pd-devel/0.41.4/src/pd_connect.tcl (rev 0) +++ branches/pd-devel/0.41.4/src/pd_connect.tcl 2009-01-06 02:22:03 UTC (rev 10474) @@ -0,0 +1,38 @@ + +package provide pd_connect 0.1 + +namespace eval ::pd_connect:: { + variable pd_socket + + namespace export connect_to_pd + namespace export pd +} + +proc ::pd_connect::connect_to_pd {portnumber} { + variable pd_socket + puts stderr "Connecting to 127.0.0.1 $portnumber ..." + if {[catch {set pd_socket [socket 127.0.0.1 $portnumber]}]} { + puts stderr "WARNING: connect to pd failed, retrying port $portnumber." + after 1000 ::pd_connect::connect_to_pd $portnumber + return + } + puts stderr "Connected to pd on port $portnumber" + fconfigure $pd_socket -blocking 1 -buffering line + fileevent $pd_socket readable [list pd_readsocket $::pd_connect::pd_socket] +} + +# send a message from Tcl to Pd +proc ::pd_connect::pd {message} { + variable pd_socket + if {$pd_socket == ""} {error "Not connected to 'pd' process"} + puts $pd_socket $message +} + +# figure out which namespace the eval is using... this probably needs to be +# global so that eval runs in the global namespace +proc pd_readsocket {pd_socket} { + set cmd_from_pd [gets $pd_socket] + puts stderr "cmd_from_pd $cmd_from_pd" + eval $cmd_from_pd +# eval [gets $pd_socket] +}
Modified: branches/pd-devel/0.41.4/src/pd_menucommands.tcl =================================================================== --- branches/pd-devel/0.41.4/src/pd_menucommands.tcl 2009-01-03 09:15:08 UTC (rev 10473) +++ branches/pd-devel/0.41.4/src/pd_menucommands.tcl 2009-01-06 02:22:03 UTC (rev 10474) @@ -5,13 +5,9 @@ # PLACEHOLDERS
namespace eval ::pd_menucommands:: { - namespace export pd namespace export menu_* }
-proc ::pd_menucommands::pd {} { -} - proc ::pd_menucommands::menu_doc_open {docdir doc} { # PLACEHOLDER }
Modified: branches/pd-devel/0.41.4/src/pd_menus.tcl =================================================================== --- branches/pd-devel/0.41.4/src/pd_menus.tcl 2009-01-03 09:15:08 UTC (rev 10473) +++ branches/pd-devel/0.41.4/src/pd_menus.tcl 2009-01-06 02:22:03 UTC (rev 10474) @@ -21,6 +21,7 @@ # for displaying on menus
namespace eval ::pd_menus:: { + # TODO this should be only a variable declaration with the if in some kind of init() if {[tk windowingsystem] eq "aqua"} { variable accelerator "Meta" } else {
Modified: branches/pd-devel/0.41.4/src/pkgIndex.tcl =================================================================== --- branches/pd-devel/0.41.4/src/pkgIndex.tcl 2009-01-03 09:15:08 UTC (rev 10473) +++ branches/pd-devel/0.41.4/src/pkgIndex.tcl 2009-01-06 02:22:03 UTC (rev 10474) @@ -13,3 +13,4 @@ package ifneeded pd_menucommands 0.1 [list source [file join $dir pd_menucommands.tcl]] package ifneeded pd_menus 0.1 [list source [file join $dir pd_menus.tcl]] package ifneeded pd_say 0.1 [list source [file join $dir pd_say.tcl]] +package ifneeded pd_connect 0.1 [list source [file join $dir pd_connect.tcl]]
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.