Re: Manually culling a list
- To: mathgroup at smc.vnet.net
- Subject: [mg115116] Re: Manually culling a list
- From: DrMajorBob <btreat1 at austin.rr.com>
- Date: Fri, 31 Dec 2010 05:00:46 -0500 (EST)
OR...
cullList[list_] := Block[{t, selected = Unique[cullList] & /@ list},
t = DialogInput[
DialogNotebook[{TableForm@
Partition[
Riffle[Map[Composition[Checkbox, Dynamic], selected], list],
2], Button["Finish", DialogReturn[Pick[list, selected]]]}]];
Remove["Global`cullList$*"];
t];
Bobby
On Fri, 31 Dec 2010 00:53:51 -0600, Zach Bjornson <bjornson at stanford.edu>
wrote:
> Indeed, I only meant to demo the usage of Map@Composition with Dynamic
> and Checkbox. The obvious extension was to use Symbol or Unique, as you
> did, Bobby. Downside is that those methods leak new symbols each time
> they're used.
>
> Here's a reusable function that does the same thing and removes the
> symbols after use. (Remove is kind of sloppy, with "Global`*$*".)
>
> CullList[list_] :=
> Block[{t, selected = Table[Unique[], {i, Length@list}] (*Use Table
> instead of Unique[list] to enable easier use of Remove*)},
> t = DialogInput[
> DialogNotebook[{TableForm@
> Partition[Riffle[Map[Composition[Checkbox, Dynamic], selected],
> list], 2],
> Button["Finish", DialogReturn[Pick[list, selected]]]}]];
> Remove["Global`$*"];
> Return[t]];
>
> Cheers,
> Zach
>
> On 12/30/2010 7:27 PM, DrMajorBob wrote:
>> Actually, I don't think that does the job.
>>
>> a) When checking items in the "checks" list, you can't see the items in
>> "list" that you're selecting.
>>
>> b) It involves manually listing variables a, b, c... to match the list,
>> which isn't very flexible.
>>
>> c) You cannot run
>>
>> checks = Map[Composition[Checkbox, Dynamic], selected]
>>
>> a second time to create a different culled list or to cull it further.
>>
>> The following solves those problems:
>>
>> list = CharacterRange["A", "F"];
>>
>> Grid@{list,
>> checks = Map[Composition[Checkbox, Dynamic], Unique /@ list]}
>>
>> selected = checks /. {Checkbox -> Identity, Dynamic -> Identity}
>>
>> {True, False, True, False, False, True}
>>
>> cull1 = Pick[list, selected]
>>
>> {"A", "C", "F"}
>>
>> Partition[Riffle[list, selected], 2]
>>
>> {{"A", True}, {"B", False}, {"C", True}, {"D", False}, {"E",
>> False}, {"F", True}}
>>
>> To further cull the list:
>>
>> Grid@{cull1,
>> checks = Map[Composition[Checkbox, Dynamic], Unique /@ cull1]}
>>
>> selected = checks /. {Checkbox -> Identity, Dynamic -> Identity}
>>
>> {False, True, True}
>>
>> cull2 = Pick[cull1, selected]
>>
>> {"C", "F"}
>>
>> Partition[Riffle[cull1, selected], 2]
>>
>> {{"A", False}, {"C", True}, {"F", True}}
>>
>> Bobby
>>
>> On Thu, 30 Dec 2010 18:07:18 -0600, Zach Bjornson
>> <bjornson at stanford.edu> wrote:
>>
>>> Hi,
>>>
>>> In[1]:= list = CharacterRange["A", "F"]
>>> Out[1]= {"A", "B", "C", "D", "E", "F"}
>>>
>>> In[2]:= selected = {a, b, c, d, e, f};
>>>
>>> In[3]:= checks = Map[Composition[Checkbox, Dynamic], selected]
>>> Out[3]:= (*Checkboxes appear here*)
>>>
>>> In[4]:= culledlist = Dynamic@Pick[list, selected]
>>>
>>> Out[4]= (*Dynamic list of selected items appears here*)
>>>
>>> (*The list in the format you described*)
>>> In[5]:= Partition[Riffle[list, selected], 2]
>>> Out[5]= {{"A", True}, {"B", True}, {"C", True}, {"D", False}, {"E",
>>> True}, {"F", False}}
>>>
>>> Cheers,
>>> Zach
>>>
>>> On 12/30/2010 1:10 AM, ntg wrote:
>>>> Hello guys,
>>>>
>>>> Suppose I have a longish list of items that I want to manually cull.
>>>> It seems I should be able to do something like
>>>>
>>>> checkList = ({Checkbox[], #)& /@ list
>>>>
>>>> Then, I could write
>>>>
>>>> instanceOfCheckList = checkList
>>>>
>>>> check away, and hopefully see something like
>>>>
>>>> {{True, item1}, {False, item2}, ...}
>>>>
>>>> which I could manipulate. But all I see is the the list of "checked"
>>>> checkboxs and items, not the consequence of checking the boxes. I can
>>>> do a FullForm on instanceOfCheckList and extract what I need via list
>>>> surgery-- but that is inelegant. I'm sure there is some magic
>>>> incantation involving Evaluate or Interpretation or Dynamic. Can you
>>>> help?
>>>>
>>>> Thanks,
>>>> Tom
>>>>
>>>
>>>
>>
>>
--
DrMajorBob at yahoo.com