diff options
Diffstat (limited to 'category_menu-plugin.tcl')
-rw-r--r-- | category_menu-plugin.tcl | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/category_menu-plugin.tcl b/category_menu-plugin.tcl new file mode 100644 index 0000000..a5821e1 --- /dev/null +++ b/category_menu-plugin.tcl @@ -0,0 +1,40 @@ + +package require pd_menus + +namespace eval category_menu { +} + +proc category_menu::load_menutree {} { + # load object -> tags mapping from file in Pd's path + set testfile [file join $::current_plugin_loadpath menutree.tcl] + set f [open $testfile] + set menutree [read $f] + close $f + unset f + return $menutree +} + +proc category_menu::create {mymenu} { + pdtk_post "category menu plugin\n" + set menutree [load_menutree] + + $mymenu add separator + foreach categorylist $menutree { + set category [lindex $categorylist 0] + menu $mymenu.$category + $mymenu add cascade -label $category -menu $mymenu.$category + foreach subcategorylist [lrange $categorylist 1 end] { + set subcategory [lindex $subcategorylist 0] + menu $mymenu.$category.$subcategory + $mymenu.$category add cascade -label $subcategory -menu $mymenu.$category.$subcategory + pdtk_post "subcategorylist: $subcategorylist\n" + foreach item [lindex $subcategorylist 1] { + pdtk_post "item: $item\n" + $mymenu.$category.$subcategory add command -label $item \ + -command "pdsend \"\$::focused_window obj \$::popup_xcanvas \$::popup_ycanvas $item\"" + } + } + } +} + +category_menu::create .popup |