%
import random, re, string
sys.stdout=req
def rc(): return "#%06x" % random.randint(0,16777216)
things = {'control' : {
'kbd' : {'desc' : 'resizable, velocity sensitive keyboard. right click adds a note to the chord, middle click resets..'},
'grid' : {'desc' : 'x-y control surface'},
'ngrid' : {'desc' : 'multi-parameter x-y control surface'},
'filter' : {'desc' : """since im no mathemetician, biquad was very useless. straight RBJ rip here, middle click on the squares to change filter type, right click drag to adjust Q.."""},
'nob' : {'desc' : """ this was the first knob but it requires Tkzinc"""},
'knob' : {'desc' : """knob..multiple levels of precision: left button 1.0, middle 10.0, right 0.1"""}
}, 'edit' : {
'mat' : {'desc' : 'general purpose editing surface'},
'lg' : {'desc' : 'multi-set vector editor'},
'tile' : {'desc' : 'drum/grid/list editor'}
}, 'analyze' : {
'sp' : {'desc' : 'rgb-pixmap'},
'spectrum' : {'desc' : 'dual-band spectrum graph'},
'img' : {'desc' : """
create an empty img and you will get the broken-image icon, which sets up dnd - just drop some images in
they output a symbol which is filename sans extension when clicked..
"""}
}, 'container' : {
'dd' : {'desc' : 'drag\'n\'drop'},
'tree' : {'desc': 'heirarchical data management'},
'q' : {'desc' : 'queue'},
'dm' : {'desc' : 'dropdownmenu'}
}, '?' : {
'README' :{'desc' : """
these are my pd gui objects, designed to be patchable on the fly for modular, rearrangable interfaces for composition, analysis, whatever you need.. suggested input is a 3 button mouse or a touch-screen (although i haven't tested on one, so if you have an extra, let me know..) - to use them in a patch, if the widget is 'thingy', create an object [widget thingy thingy1]. the id doesnt have to be unique, but its not a bad idea.. all the attributes are settable via normal messages... some might like an inspector, this wouldnt be too hard to add..also id love if X windows and the toolkits above supported multiple cursors with independent focii for larger or multipoint-touch applications, but such is not the case currently...so enjoy the 2d single-cursor goodness
"""}, 'INSTALL' : {'desc' : """
cd /usr/local/lib/pd && cvs -d :pserver:anonymous@cvs.sf.net:/cvsroot/pure-data co extensions/gui/ix
echo -path /usr/local/lib/pd/extensions/gui/ix >> ~/.pdrc
install any missing DEPS
"""}, 'DEPS' : {'desc' : """
tcl >=8.5:
cvs -d :pserver:anonymous@cvs.sf.net:/cvsroot/tcl co tcl && cd tcl/unix&& ./configure && make install & cd ../..
cvs -d :pserver:anonymous@cvs.sf.net:/cvsroot/tktoolkit co tk && cd tk/unix&& ./configure --enable-xft && make install & cd ../..
widgets are currently hosted by the [widget] external
cvs -d :pserver:anonymous@cvs.sf.net:/cvsroot/pure-data co externals/miXed && cd externals/miXed && make && cp bin/* /usr/local/lib/pd/extra
-or- checkout all of externals and in cd externals/build && scons install
a cornucopia of Tk libraries are utilised
for ext in blt snack tkdnd tkimg tkpath tktable tktreectrl ; do cvs -d :pserver:anonymous@cvs.sf.net:/cvsroot/$ext co $ext; cd $ext && ./configure && make install && cd ..; done
last i checked tkpath was actually a module in tclbitprint
and thats all..
"""}
}}
script = []
for cat in things.iterkeys():
script.append("""document.getElementById('%s_items').style.display='none'""" % cat)
script.append("""document.getElementById('cat_%s').style.backgroundColor='gray'""" % cat)
print ""
script = []
for cat in things.iterkeys():
for item in things[cat].iterkeys():
script.append("""document.getElementById('item_info_%s').style.display='none'""" % item)
script.append("""document.getElementById('item_%s').style.backgroundColor='gray'""" % item)
print ""
def getprops(item):
props = ""
for line in re.findall(r"#\.[^@]*\n",open("/usr/local/lib/pd/extensions/gui/ix/" + item + ".wid").read()):
props += re.sub("#\.","",line)
return props
%>