aboutsummaryrefslogtreecommitdiff
path: root/toxy/notes.txt
blob: 43a2a63499dca026b35b4c455e1b9264a849002f (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
TODO for toxy
  * widget
    . push long message handlers if defined, instead of short
    . widgetcontainer: woc and wiw-list
    . better megawidgets
    . editor: handle semicolons (need to revisit resolution rules)
    . editor: break editorhook into separate properties, add them in single mode
    . find a way for "package require" to work out-of-the-box on windows
  * tow: canvas-wide and type-on-canvas-wide broadcasting
  * plustot:
    . do not evaluate if fresh, unless explicitly forced to (are side-effects
      to be modal, requested with a flag, or triggered with a message?)
    . pull inputs

DONE for toxy

alpha19
  * plustot
    . rules for slot creation:
      - there is always at least one slot, although it may be deaf
      - if a command contains a pseudo-scalar, there is exactly one,
        listening slot
      - if a command contains pseudo-array elements, there are as many slots
        as the highest index + 1 (but not more than 256, a sanity limit);
        listening slots are created for explicitly used elements, all other
        slots are deaf
      - mixing pseudo-scalar and pseudo-array forms in a single command
        is prohibited
      - if a command does not contain pseudo-variables, there is exactly one,
        deaf slot
    . firing rules established for push inputs:
      - firing (evaluation with output) is executed iff all listening slots
        have data and a) a hot slot receives input, or b) any slot receives
        an explicit firing request ('bang' message)
      - $Hin and $Cin forms of pseudo-variables: each slot may be explicitly
        declared hot (Hin) or cold (Cin), overriding the default rule (leftmost
        slot, if listening, is hot, others are cold) observed when the plain
        form, $in, is used
      - $Tin form of pseudo-variables, which is a ``pure dataflow'' variant
        of $Hin: a hot slot, which looses data after evaluation (all other
        kinds of slots keep data after evaluation, unless explicitly 'cleared')
      - 'set' message accepted in all inlets as the `cold' input
      - 'bang' message accepted in all inlets as the firing trigger
    . evaluation without output:
      - executed iff all listening slots have data and a) an object has
        just been created (creation time evaluation), or b) an object
        received an explicit evaluation request ('eval' message)
      - creation time evaluation suppresses all error messages, explicit
        evaluation does not
    . message 'clear' in any inlet clears its slot of data
    . message 'clearall' in leftmost inlet clears all listening slots
    . appearance: converting dot-sequences to valid Tcl for presentation
    . bug fix: made unclickable in gop

alpha18
  * plustot:
    . adjusted to the new, stubified +bob handling
    . +selectors registered as creation selectors, so that, e.g. "+in" is
      a valid input form for "plustot +in" ("+tot +in" remains valid too)
    . "save" callback changes every "+tot" selector to "plustot",
      and every "+selector" to "plustot +selector"
    . customized appearance:
      - creation selector omitted if equals "plustot" or "+tot"
      - text, border and i/o outline is brown, border is thicker,
	inlets and outlets are lightgrey inside and taller
    . mouse click interpreted as the message 'bang'
    . accepting commands without arguments (beware: this is yet to be debugged)

alpha17
  * widget:
    . first sketch of an editor widget (bpf), introducing a basic set of rules:
      - instance data kept in its own namespace
      - gui sends '_data' (replaces '_value') requests to pd, specifying one
	of the standard submessages: add, delete, set, get
      - pd uses the new special handler for replying: @data
      (for the time being, there is only an idle loop between the two sides)
    . maintaining a scriptlet collection, which mirrors type and instance
      handler properties (including specials: @vis, @new, @free and @data)
    . lookup in the mirror for faster and more robust handling of messages 
    . '@ini' section and 'ini' message removed, after being unified as the
      @vis special handler (use 'set @vis' message form for passing options)
    . all special handlers support short definitions (inside #. comments)
      and long definitions (tagged with #@ comments), however only short
      ones may be overriden by instance definitions
    . long message handlers are stored, but not used yet
    . .wid file header may include requirements (base widget definitions)
    . fixed: patch's directory handling in 'redefine'

alpha16
  * widget:
    . editor for options, handlers and arguments made more or less functional
    . better 'redefine' (although still only external types may be redefined)
  * tow:
    . fixed handling of gop-ed targets and missing windows
    . new messages: 'retarget', 'pwd'
  * tot:
    . scriptlet editor improved a little bit (still unfinished)

alpha15
  * fixes for megawidgets
    . setting sub-item bindings in ::toxy::subwidget
      (to be called explicitly from type initializer)
    . handling widget's state through virtual events
    . getting implicit geometry (needed for Frame widgets)
    . automatically rebinding focus for Canvas widgets

alpha14
  * 'redefine' message to widget
  * version control, using package provide (both in tcl and parsed from pd)
  * "> master" section removed:  master initializer defined directly
    by proc ::toxy::master
  * better kb: chords (shift-click), latch (control-click), dragging

alpha13
  * @new and @free handlers, defined in #@ new and  #@ free sections,
    invoked by widget object creation and destruction
  * optional sections #@ ini (aka #@ vis) appended to initializer (which still
    defines in default section too -- old .wid files do not need updating)
  * .#args parameter of message handlers, replaced (during scriptlet
    evaluation) by all arguments of an invoking message