aboutsummaryrefslogtreecommitdiff
path: root/desiredata/src/TODO
blob: dbb13cf8241347d0f9f477bf31e3fd06548c825f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
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

--- do those soon even though they're not in any milestone:
[ ] update translation credits
[s] encapsulate wires list
[s] observable boxes list
[s] observable wires list
[s] gop filter
[s] triad (which triad???)

--- those should be only things that will not be in milestones 1,2,3, until the progress bar.

[ ] glerm says: backspace key problem in virtual keyboard
[s] rewrite [any]
[ ] right-click on an [s] or [r] would have an option "Find Matching Sends & Receives"
[c] split View into several classes (why?)
[s] [error]
[b] look into race conditions and locking
[s] take advantage of the support for zero-size arrays in gcc. (how?)
[s] make t_hash thread-safe (use external iterator)
[c] figure out what to do about the existence of [$self look] vs ordinary attributes (pointer_sense= and such)
[b] localise error messages
[s] new parser for nested lists and extended symbols
[s] remove more duplication of adc vs dac (see s_audio_*.c)
[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
[ ] pd-extended's [tcl_version]
[c] -path and -helppath listbox entries should be draggable (so that up/down buttons can be removed)
[s] finish merging 0.40 (wasn't it finished?)
[s] merge 0.41 (no?)
[s] merge 0.42
[s] refcounted symbols
[c] simplify def Dialog add
[b] rewrite [image], [display], [knob], [grid], [popup], ...
[s] merge martin peach's tcp externs into the core
[ ] sync pd.gif with pd_32.gif
[s] inheritance: [super] "instantiates" other abstraction with same $0; [self] allows sending messages to self; [declare super ...] makes the tree.
[ ] 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.
[ ] tidy_up/snap to grid
[c] change the order of the fields in Properties if it makes things more logical than the order of fields of savefn
[b] too much duplication of inlets vs outlets in source (where?)
[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 dd-extended
------------------8<------------------------------------progress-bar----------------------------------------------8<------------------
[ ] use pd_32.gif on _all_ windows.
[ ] help files for: [parse], [unparse], etc.
[s] recreate abstr instances after abstr save
[s] [bng] messages get duplicated upon entering a subpatch???
[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] implement dirty flag (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
[s] writesf_free has deadlock.
[s] [netsend] is unreliable: buffer too full drops chunks of messages, not at message boundaries
[b] colorised console with hyperlinked error messages
[c] atomic undo
[c] undo subpatch
[c] numbox: is_log
[c] [hradio] : chg -> is_log
[c] [vu] props : scale should appear instead of is_log
[s] update s_audio.c to support any number of devices (not just max 4)
[c] new way to do View get_canvas
[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
[b] pd-dev message to Ed Kelly, October 5.
[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] 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] prevent hidden subpatches/abstraction-instances from being loaded in the client all of the time.
[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 optimisation
[ ] fix double delete of [pd]; this is because [pd] is both an object in a patch and a patch itself, and "subscribe" doesn't distinguish.
[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.)
[ ] atomically with multiple level

[ ] 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<t_symbol *>(sym_dsp),NULL);

[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 height (box size follows font size) or just remove that setting
[b] fix NumBox's width (missing some fudge)
[b] fix NumBox's mem corruption while testing width on auto-apply

Implement (or fix) Find:
    with ability to search across canvases:
	[ ] all canvases
	[ ] all subcanvases (including invisible)
    [ ] with regexps
    [ ] with replace
[ ] in hsl-help.pd, [hsl] shouldn't appear as a Radio.
[ ] canvas dialogue:
    [ ] 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] proper symbol quoting
[c] patching-in-tongues follow-up
[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.
[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 download (property dialogues autoapply)
[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... (?)
[ ] 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

<chun> 1. a keyboard operated cursor, a bit like Active, but one can use it like the mouse pointer
<chun> 2. snap to grid feature, or similiar 
<chun> 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] make commandline options reloadable at runtime
[x] canvas scrollbars auto-disappear when not needed.
[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 dialogues 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] coloured 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
[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" dialogue.
[s] turn [makefilename] into something that doesn't suck. (alias it to [sprintf] or [format])

[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] <Dossy> 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<------------------

<arjen> 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

<matju> is there something like listbox but which works as a popup menu ?
<tclguy> tk_optionMenu is an old-school version
<tclguy> 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)

<matju> is there a wrapper for libagg for tcl? AGG of antigrain.com
<ijchain> <kbk> 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 <morph_2016@yahoo.co.uk> 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/

<mamalala> 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 ....

#--------#--------#--------#--------#--------#--------#--------#--------#--------
interface wishlist from timvets (2008 Feb 17)

Hello,
here's my current Pd GUI wishlist, things that could streamline my work 
flow, things that don't seem logical to me...etc:

I wish:
[ ] going in and out of edit mode was reflected by the cursor turning into 
a hand or arrow immediately, not requiring the user to move it first, 
who, if newbie, can get confused if he/she hasn't moved the mouse.
(this is the case on some versions I use in class, specifically 
pd-extended OSX I think)
[ ] shift-click-and-drag on a number box would also work after you already 
clicked. Another idea: ctrl-click-drag to increment in steps of 10 or 100.
[ ] home, end, shift+left/right, ctrl+left/right, ctrl+shift+left/right 
would work within object boxes just like in a text editor.
[ ] click+drag a single object or messagebox wouldn't automatically 
activate text entry mode but the object itself stays the selection, so 
that you can move it again or use arrow keys for repositioning without 
having to deselect+reselect first.
[ ] for a multiple connections facility, to connect all outlets of object a 
to all inlets of object b, and variations on that. (I think max has had 
this for a while, and maybe desiredata ?).
[ ] 'subpatcherize'
[ ] that when deleting all text in a comment and clicking outside it, the 
comment would be deleted, so that if you save the patch, close it, and 
reopen it, there doesn't appear the word 'comment' everywhere you left a 
'blank' comment this way. Alternatively it could become 'comment' upon 
finalizing an empty comment, so that you can still see, select and 
delete it.
[ ] the file browser (openpanel/savepanel) would support keystrokes to 
navigate: alt+up one dir up, tab to toggle focus between text entry and 
graphical area (where folders and files are displayed)...etc
[ ] opening the filebrowser wouldn't cause the Pd main window to pop in 
front of all the patcher windows after it is closed.
[ ] one object could be finalized by clicking the outlet of another object, 
so that you can immediately connect it. The extra click outside the 
object to finalize it first is unnecessary. When I click the outlet of 
another object, it is obvious that I am done typing the name of the 
current one.

#--------#--------#--------#--------#--------#--------#--------#--------#--------
marius schebella 2008 Feb 17

Hi,
this list is great! I would like to add the one again that I posted 
yesterday (sorry for double posting, but this thread subject is better)

[ ] when only one object is selected and you start typing (any other than 
arrows) it should be possible to write into the object without an 
additional click into the object. I often use ctrl+d to duplicate an 
object and then arrow keys to place it on the canvas, and then I would 
like to just start typing into the object.
[ ] when there is more than one object selected and I click into one 
object, but do not drag, then that object could switch to type-entry 
mode. right now I have to unselect all objects by clicking into the 
canvas and then click into the box to start text entry.
[ ] exiting entry mode with enter would actually be nice, too. (for 
messages cr could be shift+enter (the cr is overwritten anyway).
[ ] more actions could be triggered by keyboard shortcuts?
[ ] the alt click and drag function. you click on an object and as soon 
as you start dragging that object is duplicated, but at the same time 
you already have the new object at the cursor position and can place it 
fast at a new spot.

I want to point out that in many cases this would mean different 
behaviour between clicking, and clicking+dragging.

plus new: keyboardshortcuts to bring the pd window to the front (to 
watch console output.
[ ] and also change the cursor to arrow when you hit the command key to 
imply that clicking on messages or numbers has different behaviour (play 
mode) when you hit apple (or ctrl on win/lin?).

marius.