From 4d84d14ac1aa13958eaa2971b03f7f929a519105 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?IOhannes=20m=20zm=C3=B6lnig?= Date: Fri, 8 Feb 2008 13:00:32 +0000 Subject: reorganized svn path=/trunk/; revision=9400 --- desiredata/src/TODO | 454 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 454 insertions(+) create mode 100644 desiredata/src/TODO (limited to 'desiredata/src/TODO') diff --git a/desiredata/src/TODO b/desiredata/src/TODO new file mode 100644 index 00000000..0e866840 --- /dev/null +++ b/desiredata/src/TODO @@ -0,0 +1,454 @@ +DesireData's TODO list, $Id: TODO,v 1.1.2.28.2.63 2007-09-09 17:45:45 matju Exp $ + +LEGEND: + [c] client + [s] server + [b] both + [x] done + +------------------8<--------cut-here--------8<------------------ + +[s] encapsulate wires list +[s] observable boxes list +[s] observable wires list +[s] gop filter +[s] triad + +------------------8<--------cut-here--------8<------------------ + +[s] class_setreinit(t_pd *, t_symbol *s, int argc, t_atom *argv) +[s] fix canvas_merge, canvas_remove_nth, canvas_sort +[s] recreate abstr instances after abstr save +[s] [bng] messages get duplicated upon entering a subpatch??? +[s] rewrite [any] +[s] counter-test.pd shows [nbx] jamming the update queue if too many updates at once...? +[s] queue priorities cause double call to changed() to change the expected order of updates (dangling pointer in client) +[c] Ctrl+e doesn't change Edit menu entry; likewise for visual_diff +[c] Save Changes? Save Changes? Save Changes? Save Changes? Save Changes? Save Changes? Save Changes? Save Changes? Save Changes? +[s] canvas_resortinlets confuses wire upload +[s] should do canvas_resortinlets after moving objects +[c] split View into several classes +[s] extraneous space at end of binbuf_gettext +[s] make t_hash thread-safe (use external iterator) +[s] take advantage of the support for zero-size arrays in gcc. +[s] writesf_free has deadlock. (assigned to Sylvain) +[b] look into race conditions and locking +[c] figure out what to do about the existence of [$self look] vs ordinary attributes (pointer_sense= and such) +[s] [error] +[b] localise error messages +[b] colorised console with hyperlinked error messages +[c] atomic undo +[c] undo subpatch +[c] numbox: is_log +[c] change the order of the fields in Properties if it makes things more logical than the order of fields of savefn +[c] [hradio] : chg -> is_log +[c] [vu] props : scale should appear instead of is_log +[s] figure out how to keep [pd] subscribed even when closed. +[s] new parser for nested lists and extended symbols +[s] update s_audio.c to support any number of devices (not just max 4) +[s] look for new bugs involving %*s added around 2007.06.28 +[c] new way to do View get_canvas +[b] too much duplication of inlets vs outlets +[s] too much duplication of adc vs dac (see s_audio.c) +[c] implement multiple cascaded languages (use listbox+up+down) +[c] def Menuable raise {} {wm withdraw $w; wm deiconify $w +[s] what to do with post() in case of -listdev, etc.? +[s] turn old [dropper] code into a feature of SymbolBox +[s] inheritance: [super] "instantiates" other abstraction with same $0; [self] allows sending messages to self; [declare super ...] makes the tree. + +[b] GOP problems are back due to recent changes in canvas_map and canvas_vis. + now that abstractions don't get loaded into the client anymore, GOP can't always be drawn anymore too. + i mean, because the content of GOP is not uploaded to the client, so the client can't draw anything about it.. + unless def View outside_of_the_box are moved to the server side and the server only uploads what needs to be drawn + for gop + + another side effect of not uploading the content of [pd]/abs that i just found out is that, when deleting such object, + 1. the client won't be able to perform things like $wire deconstruct in def Canvas del, + as the object don't exists in the client side + 2. even if client don't call things like that, the server would still send -> delete message to the client, + which causes the same error because the object don't exists... + +[s] it might make sense to always upload subpatches but upload instances only when needed +[s] server don't send delete message back after client sending "object_delete" (http://pastebin.ca/318343) +[s] serial got sent too early when creating [pd] with push & #N canvas (http://pastebin.ca/318318) +[s] GOP problems are back due to recent changes in canvas_map and canvas_vis +[s] [route] should be reconfigurable and accept pointer +[s] [select] should accept pointer +[s] [moses] should be multi-arg (and be aliased to [range] ?) +[s] get rid of stderr in server +[s] prevent hidden subpatches/abstraction-instances from being loaded in the client all of the time. +[s] -lib in .pdrc crashes server: http://pastebin.ca/286300 +[s] server don't pick up changes via NumBox reload, ie the width: + <- .x8068058 reload 2 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 256; + -> change x8068058 x8067c50 {#X obj 335 166 nbx 8 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 256;} +[b] fix gop + [c] reimplement View get_canvas so that it does not rely on [focus] + [s] gop contains can be drawn if not uploaded to client +[ ] fix deleteing/closing Canvas + [ ] server sends -> x806a3b8 delete twice + [ ] fix deletion order +[ ] graphical array rendering optimization +[ ] fix double delete of [pd]. +[s] added "version 2" syntax parser (optional), which has nested lists, + extended quoting, extended float syntax + (some ex-symbols now parsed as floats: +1 +1.0 +1e8 0x10 and so on.) +[ ] note that Marius Schebella is interested in benchmarks +[ ] atomically with multiple level +[ ] tidy_up/snap to grid +[ ] cleaner parsing of [expr]... remove int type because it causes e.g. [expr 8.0 / 10.0] = 0 but [expr 8.0/10.0] = 0.8 +[ ] how does [declare -stdpath] work? this is a mystery. can't get it to work in pd 0.40. + +[ ] PureUnity + [ ] benchmark + [ ] signals + [ ] grids + [ ] transitive, antisymmetric, predicate + [ ] contracts : *-rule.pd + [ ] tests for the frameworks' own components? + * not finished: + [glue-test] + [comparators-test] [arith-test] + [operator1-rule] [operator1-test] + [operator2-rule] [operator2-test] + +[s] those are the externs that have to be recompiled if I want to trap calls to return values of getfn. + ./externals/olafmatt/clone/clone.c:544: mess1(&cv->gl_pd, gensym("dsp"), sp); + ./externals/grill/dynext/src/main.cpp:952: mess1((t_pd *)canvas,const_cast(sym_dsp),NULL); + + matju: another big bug for me - v/h sliders in existing patches bounce + repeatedly back to bottom when some kind of event occurs. you have to move the + mouse very gently back and forth until the slider stays at the location you want, + then without moving the mouse, release the mouse button :( + +[s] allow helpfiles to load without having to "make install". +[s] switch iemguis to using only t_atoms +[s] MIDI loopback pseudo-device (inside pd) +[s] audio loopback pseudo-device (inside pd) +[s] use vector doubling in binbuf_add,binbuf_addv... +[c] opening an already-open subpatch should just raise that subpatch +[c] bug: you can move parts of gop subpatches, from the parent patch! +[c] pixel offsets are not correct in [hsl] [vsl]: + distinguish between $@w or $@h and actual size. there should be 4 extra pixels. +[c] hide inlets/outlets of IEMGUI when they have receive-symbols/send-symbols +[c] rightclick help doesn't work on [cnv]: tries to find help for "cnv.pd" ??? +[s] creating a graph causes crash. +[b] fix NumBox's width and height (or remove those settings) +[x] Implement (or fix) Find, Find Again in class Client + [x] with ability to search substrings + [ ] with ability to search across canvases + [ ] all canvases + [x] all subcanvases + [x] only the current one + [ ] with regexps + [ ] with replace +[ ] in hsl-help.pd, [hsl] shouldn't appear as a Radio. +[ ] canvas dialog: + [ ] add option for old-style GOP + [ ] make hidetext work + [ ] add units/pixel +[c] array button doesn't work (menuarray) +[c] implement timeout in def Manager call +[s] finish merging 0.40 (wasn't it finished?) +[s] merge 0.41 (no?) +[s] proper symbol quoting +[s] refcounted symbols +[c] patching-in-tongues follow-up +[c] def def +[c] take care of needless "save changes?" +[c] make List objects, to manage children, visible_children, wires, selection, selection_wires. +[c] skip unneeded motion events inside client (do we need this?) +[b] rename pd to pd-server, desire.tk to pd-client, add new program "pd" which would launch both (will we really do this?) +[b] #V test with bg color +[c] kill global tooltip variable ? +[c] iemprops: min,max labels broken +[b] fix the [key] and [keyup] and [mouse] (?) classes +[s] fix all issues with backslashes and braces. +[-] write an installer in Tcl/Tk. +[s] canvas_object_insert() +[c] simplify def Dialog add +[c] devlist isn't supposed to be like a choice, rather like several choices. +[c] implement def Canvas tidy +[c] set tk::mac::useCGDrawing 1 +[s] differential upload +[c] differential redraw +[b] improved dirty_lists including proper array support +[b] bang counter (instead of sending every bang message to client) +[b] implement garray +[c] implement a mark-and-sweep in order to find leaks... (?) +[b] rewrite [image], [display], [knob], [grid], [popup], ... +[ ] this seems fishy but might have good ideas -> http://www.rebelscience.org/Cosas/Reliability.htm +[c] make a statistical profiler for Tcl, if possible +[c] try to use profiler.tcl (tcllib) in a sensible way +[s] try C-oriented tools: + [ ] oprofile (with GUI) + [ ] memprof + [ ] sysprof + [ ] kprof + [ ] gprof + [ ] prospect + +[s] iirc, bang~ registers a timer callback. the problem is that the timer callbacks are only executed every dac block, + which is 64 samples. so running bang~ in subpatch with less than 64 samples, bang~ sets the same timer several times, + but it's only executed once. + +[b] think about this «if you are reconsidering properties panels, I strongly encourage all y'all to make them Pd patches. + This is how Max/MSP does it and I think it would work very well for Pd as well. Sounds like this is a good opportunity + to make the switch.» -- hcs + + 1. a keyboard operated cursor, a bit like Active, but one can use it like the mouse pointer + 2. snap to grid feature, or similiar + 3. prefix keybindings, like M-x in emacs + +Iohannes said about redirecting stdout/stderr: + pd -verbose -stderr 2>&1 | while read line; do echo "${line};" | pdsend 6666 localhost udp; done + +[b] [struct], scalar, DS-array, [plot], [drawpolygon], [drawnumber], ... +[c] desire.tk can be *really* loaded without Tk +[c] ReadLine or NCurses interface +[c] make commandline options reloadable at runtime +[x] canvas scrollbars auto-disappear when not needed. +[b] implement dirty flag +[s] use gensym2() in builtin classes and stuff. +[s] fix 64-bit arrays so that carmen gets a use for DD. +[s] carmen also needs strings (no symbol leakage) +[c] right-click on labels for translations. +[b] http://www.w3.org/DesignIssues/Diff +[c] solve printing problems with GDB. use a pty (pseudo-teletype) ---> http://wiki.tcl.tk/3916 +[c] try TkZinc +[c] try Tcl/Gtk (Gnocl) with emulation layer +[?] http://www.comparisonics.com/gallery.html +[c] obiwannabe writes: + it would be good to have the choice as a comandline arg of the first one launched with a way + to accept patches to open in the same instance from, say a web browser. Like also when you are + in a file manager and browsing some .pd files you really want them to open in the same running instance. +[s] must work with ALL gridflow samples +[b] objectbox argument completion +[b] messagebox completion +[c] tooltips on arguments/inlets/outlets +[c] option to make non-gui objects appear on a GOP (?) +[b] multilingual labels in objects +[b] multilingual comments +[b] what would be needed to be able to use gdb --pid=... ? +[ ] set tk::mac::CGAntialiasLimit 2 +[ ] try Doxygen's callgraphs +[ ] try splint (http://www.splint.org/) +[ ] try uno +[ ] try CCCC +[ ] try OSX Shark +[ ] try http://www.drugphish.ch/~jonny/cca.html +[-] do we move the trac to artengine or not? +[c] remember that it's possible to use break in a bind-handler, to completely override system's behaviour. +[c] try: itcl itk iwidgets (itk implements megawidgets) +[c] try tkgate, a hardware sim program +[ ] try libentity +[c] try vtk-tcl +[s] make sure $0 actually works (see canvas_realizedollar) +[c] test rcv_able, snd_able +[?] iem: snd/rcv problem(s) ? (what was that?) +[c] [vu] have fcol in props ! +[c] [vu] has snd in props ! +[b] Duplicate wires? +[c] Can connect object to an object that is inside a GOP (!!!!) +[c] weird offset stuff when there are negative canvas coords sometimes. +[s] Bug: bad quoting in sys_mgui() +[b] Bug: spaces in name of vslider cause corruption of properties (devel_0_37) +[b] classlist: add method signatures +[c] bang flash delays should be reimplemented +[c] pdrc_options radio don't load/save +[c] patch window may open off-screen (all branches) +[c] patch window may open too big (all branches, osx) +[b] properties on objectboxes (generic dialogs tapping into method signatures) (?) + [s] hooks for outsourcing the preceding stuff to a plugin (eg: GridFlow, PyExt) +[b] VT100 colours in console +[b] [graph] is too slow (gui) for real big arrays +[b] freeform comments (no atom parsing) +[b] preserve whitespace in textboxes? +[b] inlet inspector to show what are the message types expected by an inlet + that could read like "int: set left operand; bang: do it" +[c] custom buttonbars (including premade objects with args like a [t b f] and such) + [c] with configurable hotkeys +[b] colored wires +[b] insert_object makes error with multiple selection. +[c] popup_properties on multiple selection. +[b] segmented patchcords: + [c] a hotkey to click on the cord, and add a new segment + [c] a hotkey to drag the "points" (where two lines meet) + [c] a modifier key to delete a segment (actually the others should be that way too) + [c] you should be able to right click on a regular wire, and press "segment" or do a hotkey with it + and it automatically turns it into an straight-elbow multisegmented wire +[b] [t a] could be a very small GUI object (called "null object") +[b] all the [t] could be GUI objects +[b] GUI objects for [inlet] and [outlet] and [pd] ([page]) +[-] make a sort of pd-extended, call it DesireData Express or (gasp) Extraordinaire. + +[s] symbol vs strings: Ruby is right: the Symbol vs String distinction is annoying and possibly obsolete. + according to me, symbols exist mostly because LISP had them before they had strings, and because most + Strings implementations aren't powerful enough to be as fast (or almost as fast) as Symbols. + (well, for compatibility reasons, just like in Ruby, we can't remove symbol support completely, but + at least we can reduce the difference between strings and symbols to a minimum.) + +[b] server-side IEMGUI could be turned into Tcl-based externs OR EVEN become abstractions. + it's possible to make a DesireData GUI for any Pd class, including abstractions. + to turn IEMGUI into an abstraction, what's missing is the savefn/saveargs/scanargs business. + +[s] I would like to know how much it is feasible to compress the t_atom + structure so that even with 64-bit pointers the t_atom still stays 8 bytes + instead of 16. I think it's possible, but not necessarily in a + backwards-compatible way, and not necessarily in a portable way. also maybe it's not that useful. + +[c] splashscreen: we could make it different than other programs by inserting the splashscreen + inside the main window or we could make it a separate window but no timer, just an [OK] button, + so actually, this would be exactly the same as the "About" dialog. + +[s] turn [makefilename] into something that doesn't suck. (alias it to [sprintf] or [format]) + +[s] merge martin peach's tcp externs into the core +[b] data inspector: when this tool is enabled, it prints on the console any data coming through whatever cable you + currently have selected. if you select multiple wires, it reports whats going through multiple wires. +[b] you need a way to see cpu usage on individual objects or on patchers or on groups of selected objects +[c] objectbox history: see whether ddrc should have a history count entry; + think about saving history; matju thought that it could be turned into a dynamic button bar that you can drag from. +[?] send to front, send to back +[c] make windows not get auto-resized to the width of the toolbar, so that people can have tiny windows. +[c] fconfigure -encoding binary ... +[s] implement the stuff that is in iostreams.txt + +[c] Luke Iannini suggests some OSX bindings: + Command-` to switch between different windows within the application. + Command-, to bring up preferences (though this one is more difficult since there are multiple preference windows...) + Command-m to minimize the window (this currently brings up the "send message" dialogue box) + +[s] Claude: + Sending a message to vline~ creates a t_vseg, which are stored in a + sorted linear linked list, which means the time taken to add each new + line segment would be O(n), where n is the number of existing line segments. + +[-] look at some object sync protocols that we can think of: NFS for folders, palm sync for calendars, rsync for file contents + +Marius Schebella: +I have a small keyboard shortcut wish: change between "entering mode" and "selected mode" with boxes. +when I create a new object/message... then it would be nice to have a +shortcut that switches from the mode, where the cursor is in the box to the +mode, where the object is selected. I think the tab-key could be used for +that. As it is now, I type something in, then I have to grab the mouse, then +klick, then select, then I can adjust it (which I also do with the keyboard, +because it is more precise). +I know the toggeling will not be possible when more objects are selected, +but maybe someone has an idea for that. + +[c] command for unpatcherizing a subpatch or abstraction (useful for making variants) + or for turning an abstraction into a subpatch. + +[s] I fixed it now, but I don't know if this is not a bug in pd 0.40: + +"The problem is, that canvas-local search path really tread each path as local to the canvas-path ( see line 1561 in g_canvas.c). +So if you add e.g. /usr/local/lib/pd/extra/iemmatrix, it will search for this path, but local to the canvas path - so if I started +Pd from /home/me it will search in /home/me//usr/local/lib/pd/extra/iemmatrix ! Is this a feature or a bug of Pd ?" -- Holzi + +[s] "I don't quite understand how this explains why wrap~ of -1 returns 1." -- steffen + +[s] there's a [wrap~] but no [wrap]. there's a [>] but no [>~] (without externals). -- matju + +dmotd about converting patches to postscript: +"the internal pd postscript printer grabs the viewable canvas size, +this would need to change to encompass the virtual limits of the patch. +tcl/tk's 'canvas postscript' command takes the -width -height flags, +so making it the virtual bounds is trivial. this works for snapshotting +canvas bounds: sys_vgui("set cnv_bbox [.x%x.c bbox all] \n .x%x.c +postscript -file /tmp/canvas.ps -width [lindex $cnv_bbox 2] -height +[lindex $cnv_bbox 3] \n ", canvas, canvas); + +------------------8<--------cut-here--------8<------------------ + +Patching-in-tongues Project + +[ ] make entries counter and matcher. + + entries +en: english [ ] +es: español [ ] Mario Mora & Ramiro Cosentino +de: deutsch [ ] M Neupert, G Holzmann, T Grill +nb: bokmål [ ] Gisle Frøysland +it: italiano [ ] Davide Morelli + Federico Ferri +pt: português [ ] Nuno Godinho +fr: français [ ] Patrice Colet +ca: català [ ] Nùria Verges +pl: polski [ ] Michal Seta +eu: euskara [ ] Ibon Rodriguez Garcia (Enrike Hurtado) +cn: chinese [ ] Chun Lee +jp: nihongo [ ] Kentaro Fukuchi +tu: türkçe [ ] ... Koray Tahiroglu +sv: svenska [ ] ... Daniel Skoglund (NOT FOUND) +br: brasiliano [ ] ... Gabriel Menotti +dk: dansk [ ] ... Steffen Leve Poulsen + +------------------8<--------cut-here--------8<------------------ +Dec 18 2006 + +1. there's no way to limit the size of the output buffer. If the other +side of the connection doesn't respond, the sending buffer just +inflates quickly. I've seen it happen that a bug in the sender causes +it to try to send so fast that it ate memory like an infinite recursion +or a forkbomb. + +2. That operation is not realtime-safe (but still it's much closer to +being so than just blocking...) + +3. It's only usable by the GUI socket and never by [netsend]. + +4. While that buffer together with t_guiqueue allow GUI updates to be +delayed for as long as necessary, it doesn't solve the problem that it can +send information that is already outdated and redundant. This can be +important in preventing problem #1 for a very heavy GUI. DesireData has +had this problem essentially dealt with since a long time, but it lacks +some fine tuning to get more robust. + +------------------8<--------cut-here--------8<------------------ + + matju, you may be interested in "Jim" - that does have closures and on the Wiki you can find several attempts and + experiments regarding closures: http://wiki.tcl.tk/closures + + is there something like listbox but which works as a popup menu ? + tk_optionMenu is an old-school version + or get a combobox from BWidget or tile + +1. wish8.5 desire.tk city.pd &> err +2. ctrl+e, ctrl+a, shift+right*3 (or just once if profiling) +3. times (tclx) + + is there a wrapper for libagg for tcl? AGG of antigrain.com + don't know of one, but SWIG, Critcl, or ffidl might plug the gap + +[initbang] & [closebang]: https://sourceforge.net/tracker/?func=detail&atid=478072&aid=1544041&group_id=55736 + +[s] Ed Kelly reports that ALSA 24-bit output does not work? + +to dave griffiths: I think that this is three feature requests: +1. performing replacement of wire-object-wire by a single wire, as a +single operation in the GUI +2. make that operation atomic in terms of DSP recompilation. +3. break down DSP recompilation in pieces so that it is more "incremental" +for large patches. +In the case of object insertion, (2) and (3) are not implemented either, +but step (1) already has most of the desired effect; for the message +system, step (1) is all that is needed. DSP is more work and I know less +about DSP. It'll take me a while to get there; but (2) doesn't seem so +hard. + +http://www.tomsawyer.com/gallery/index.php + +[b] matju to atwood: + If I had automatic positioning in DesireData, it would be as an option: e.g. objects could default to "floating around" + (that is, automatic positioning), but be pinned down into specific positions. In that case, an exception has to be done + for [inlet] and [outlet] objects mostly. (the DS subsystem should be skipped over as well...) I could also have a use + for some semi-automatic repositionings: for example, there could be a keyboard shortcut to reposition a non-"floating" + object wherever it would go if it were floating, and if the user doesn't want it s/he can Ctrl+z it. + +http://www.graphdrawing.org/ + + you select a bunch of objects and group them together .... then you can select all the objects in that group +later, if needed, by its name like, you start to build some mixer patch .. and then you add a chain for an external fx, +so you can put all associated objects in the "ext.fx" group ... whenever it gets so messed up that you forgot what is +what, you can just select the groupt you want, and see/move/whatever the involved objects the group name could also act +as a template for the name of a subpatch, if one decides to finally put them into one .... + -- cgit v1.2.1