[PD-cvs] pd/src u_matju.tk,NONE,1.1.2.1

Mathieu Bouchard matju at users.sourceforge.net
Mon Oct 25 17:23:43 CEST 2004


Update of /cvsroot/pure-data/pd/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10850

Added Files:
      Tag: devel_0_37
	u_matju.tk 
Log Message:
class browser code


--- NEW FILE: u_matju.tk ---
# Copyright 2004 by Mathieu Bouchard <matju at artengine.ca>

############ class list

proc show_class_list {} {
	pd "pd update-path ; pd update-class-list class_list_callback ;"
}

proc class_list_fill_box {s} {
	global class_list
	set n 0
	.browser.cl.1 delete 0 end
	foreach class [lsort $class_list] {
		if {[string length $s]==0 || [string first $s $class]>=0} {
			.browser.cl.1 insert end "$class"
			incr n
		}
	}
	.browser.title configure -text "$n/[llength $class_list] registered object classes"
	.browser.cl.1 selection set 0 0
}

proc search_for_externs {} {
	global pd_path
	global class_list
	foreach dir $pd_path {
		catch {
			set xs [glob "$dir/*.pd*"]
			foreach x $xs {lappend class_list "[lindex [file split $x] end] (not loaded)"}
		}
	}
}

proc class_list_callback {} {
	global class_list
	search_for_externs
	toplevel .browser
	frame .browser.cl
	label .browser.title -text ""
	pack .browser.title -side top
	listbox .browser.cl.1 -width 30 -height 10 -yscrollcommand ".browser.cl.2 set"
	scrollbar .browser.cl.2 -command ".browser.cl.1 yview"
	text .browser.cl.3 -width 30 -height 10 -yscrollcommand ".browser.cl.4 set"
	scrollbar .browser.cl.4 -command ".browser.cl.3 yview"
	pack .browser.cl -side top -fill both -expand yes

	frame .browser.cl.5
	button .browser.cl.5.help -text "Help" -command {pd "pd help [.browser.cl.1 get [.browser.cl.1 curselection]] ;"}
	pack .browser.cl.5.help -side top
	pack .browser.cl.5 -side left -fill    y -expand no
	pack .browser.cl.1 -side left -fill both -expand yes
	pack .browser.cl.2 -side left -fill    y -expand no
	pack .browser.cl.3 -side left -fill both -expand yes
	pack .browser.cl.4 -side left -fill    y -expand no

	frame .browser.butt
	label .browser.butt.1 -text "Filter: "
	entry .browser.butt.2 -width 15
	pack .browser.butt.1 .browser.butt.2 -side left
	button .browser.butt.close -text "Close" -command "destroy .browser"
	pack .browser.butt.close -side right
	pack .browser.butt -side bottom -fill x -expand no
	class_list_fill_box ""
	bind .browser.cl.1 <Button-1> {
		after 1 {
			set i [.browser.cl.1 curselection]
			set class [.browser.cl.1 get $i]
			pd "pd update-class-info $class ;"
		}
	}
	bind .browser.butt.2 <KeyPress> {after 1 {class_list_fill_box [.browser.butt.2 get]}}
	after 1 {focus .browser.butt.2}
}

proc class_info_callback {class} {
	global class_info
	set i [.browser.cl.1 curselection]
	set class [.browser.cl.1 get $i]
	.browser.cl.3 delete 0.0 end
	.browser.cl.3 insert end "class $class\n"
	foreach {k v} $class_info($class) {
		.browser.cl.3 insert end "$k=\"$v\"\n"
	}
}






More information about the Pd-cvs mailing list