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
|
CLASS:: ListView
summary:: A view displaying a list of text items.
categories:: GUI>Views
DESCRIPTION::
A view that displays a list of text items and allows one or more of them to be selected, depending on link::#-selectionMode::.
In default selection mode (single item selection), clicking on an item will select it, and pressing the up or down arrow keys will move selection to previous or next item, respectively. Other selection modes allow more complex interaction.
There is a difference between the concepts of link::#-value#current:: item, end link::#-selection#selected:: items. In default selection mode they will always be the same, but not so in other modes.
CLASSMETHODS::
PRIVATE:: key
INSTANCEMETHODS::
SUBSECTION:: Data
METHOD:: items
The list of items displayed by the view.
argument::
An Array of Strings, each String defining the text to represent an item.
METHOD:: clear
Removes all items.
METHOD:: value
The index of the current item, or nil when there is no current item. Note that this may be different than link::#-selection:: when link::#-selectionMode:: allows multiple items to be selected.
argument::
An Integer or nil.
METHOD:: valueAction
Sets link::#-value:: and triggers the link::#-action::.
METHOD:: selection
An array of all selected indexes. When setting selection, either an array or a single integer may be used.
Note that this may be different than link::#-value:: when link::#-selectionMode:: allows multiple items to be selected. When setting selection in single-item selection mode, only the last index will remain selected.
SUBSECTION:: Appearance
METHOD:: colors
The background colors of the items.
argument::
An Array of Colors, one Color for each item.
METHOD:: stringColor
The color used to display all the text of all unselected items.
argument::
A Color.
METHOD:: selectedStringColor
The color used to display the selected item's text.
argument::
A Color.
METHOD:: hiliteColor
The color used to indicate the selected item (aside from the color of its text).
argument::
A Color.
SUBSECTION:: Interaction
METHOD:: selectionMode
The allowed mode of item selection, according to the following table:
table::
## strong::Value:: || strong::Meaning::
## \none || No item can be selected.
## \single || Only a single item can be selected at once.
## \multi || Multiple items can be selected. An item's selection is toggled when clicked.
## \extended || Multiple items can be selected, individually by holding the Ctrl key, and in a batch by holding the Shift key.
## \contiguous || Multiple neighbouring items can be selected by holding the Shift key.
::
argument::
One of the Symbols listed in the table above.
SUBSECTION:: Actions
METHOD:: action
The action object evaluated whenever the user changes the emphasis::current:: item, i.e. when link::#-value:: changes as a result of GUI interaction.
METHOD:: selectionAction
The action object evaluated whenever link::#-selection:: changes.
METHOD:: enterKeyAction
The action object evaluated whenever the user presses the Enter (Return) key.
METHOD:: defaultKeyDownAction
Implements the default effects of key presses as follows:
table::
## strong::Key:: || strong::Effect::
## space || select next item and trigger action
## r || trigger enterKeyAction
## n || trigger enterKeyAction
## a number || trigger enterKeyAction
## up arrow || select previous item and trigger action
## down arrow || select next item and trigger action
## left arrow || select previous item and trigger action
## right arrow || select next item and trigger action
::
SUBSECTION:: Drag and drop
METHOD:: defaultGetDrag
returns::
The link::#-value::.
METHOD:: defaultCanReceiveDrag
returns::
True if the current drag data is a number.
METHOD:: defaultReceiveDrag
Sets link::#-valueAction:: to the current drag data.
EXAMPLES::
subsection:: Basic Example
code::
(
w = Window.new.front;
v = ListView(w,Rect(10,10,120,70))
.items_([ "SinOsc", "Saw", "LFSaw", "WhiteNoise", "PinkNoise", "BrownNoise", "Osc" ])
.background_(Color.clear)
.hiliteColor_(Color.green(alpha:0.6))
.action_({ arg sbs;
[sbs.value, v.items[sbs.value]].postln; // .value returns the integer
});
)
::
subsection:: Sound Example
Use ListView to switch filters:
code::
(
s.waitForBoot({
var f, freq, ww;
n={r=LFSaw.ar([220, 530],0,0.3)*LFPulse.ar(12,0,0.3,0.4); [r[0],Delay2.ar(r[1])]}.play;
freq={SinOsc.kr(0.5,0,4000,4200)}.play;
w=Window("Filters").front;
v = ListView(w,Rect(10,10,180,120))
.items_([ "No Filter","RLPF", "RHPF", "BPF", "Resonz", "MoogFF" ])
.background_(Color.clear)
.hiliteColor_(Color.green(alpha:0.6))
.action_({arg v;
v.value.switch(
0,{try{f.free};"test".postln},
1,{try{f.free};f={ReplaceOut.ar(0,RLPF.ar(In.ar(0,2),In.kr(0,1),0.2,0.3))}.play(addAction:\addToTail)},
2,{try{f.free};f={ReplaceOut.ar(0,RHPF.ar(In.ar(0,2),In.kr(0,1),0.2,0.3))}.play(addAction:\addToTail)},
3,{try{f.free};f={ReplaceOut.ar(0,BPF.ar(In.ar(0,2),In.kr(0,1),0.2,1.5))}.play(addAction:\addToTail)},
4,{try{f.free};f={ReplaceOut.ar(0,Resonz.ar(In.ar(0,2),In.kr(0,1),0.2,2))}.play(addAction:\addToTail)},
5,{try{f.free};f={ReplaceOut.ar(0,MoogFF.ar(In.ar(0,2),In.kr(0,1),1.5))}.play(addAction:\addToTail)}
);
});
ww=FreqScope.new(400, 200, 0);
w.bounds=Rect(50,Window.screenBounds.height-300,200,200);
ww.window.bounds=ww.window.bounds.moveTo(255,Window.screenBounds.height-328);
CmdPeriod.doOnce({{ww.window.close}.defer(0.5);w.close;});
//defer or crash, because FreqScopeWindow Class contains its own routine for cleaning up on CmdPeriod
w.onClose_({n.free;f.free;freq.free});
});
)
::
|