I’ll admit that I modeled my code after code in the IDE somewhere (property 
editor).  Now I wonder why they didn’t just use split.

Sent from my iPhone

> On Dec 21, 2021, at 1:14 PM, Keith Clarke via use-livecode 
> <[email protected]> wrote:
> 
> Ah, yes of course - split a list variable with comma to form an array, being 
> the inverse of combine tArray with comma to create a list. 
> 
> "The Worm is the Spice! The Spice is the Worm!” - the Dune weird array thing! 
> 
> Thank you, Alex - another synapse is ignited by the enlightenment… for a 
> while, anyway! :D
> Best,
> Keith
> 
>> On 21 Dec 2021, at 17:33, Alex Tweedly via use-livecode 
>> <[email protected]> wrote:
>> 
>> Hmmm - maybe I'm missing something, but ....
>> 
>> Can't you use the feature of "using a numeric-indexed array as key" ?
>> 
>> (AFAIK it's an undocumented feature, except in the original release notes 
>> for 5.x, which are no longer on the downloads site, and which I can't find 
>> my copy of - so if anyone has them, could they re-post somewhere. This 
>> feature allows you to use a numeric-indexed array as a key, equivalent to 
>> presenting a set of keys:
>> 
>> put "a,b,c" into tA
>> split tA by comma
>> -- now we have tA[1]="a", tA[2]="b", tA[3]="c"
>> put "def" into tArray[tA]
>> -- now tArray["a"]["b"]["c"] = "def"
>> 
>> So, where Brian's code does
>> 
>>> put the hilitedElement of the target into tElement
>>> put 0 into tIndex
>>> repeat for each item tItem in tElement
>>>   add 1 to tIndex
>>>   put tItem into tReference[tIndex]
>>> end repeat
>>> set the htmltext of field "ItemText" to tArray[tReference]
>> 
>> that should be equivalent to
>> 
>> put the hilitedElement of the target into tElement
>> split tElement by comma
>> set the htmltext of field "ItemText" to tArray[tElement]
>> 
>> Alex.
>> 
>> P.S. I also apologise for not looking at this earlier; I saw an earlier 
>> email and thought to myself "Hmmm. I bet that's a case for that weird array 
>> feature :-), and went looking for my copy of the release notes; when I 
>> failed to find them, I forgot to look further into it.
>> 
>> 
>> 
>> On 21/12/2021 15:19, Brian Milby via use-livecode wrote:
>> 
>>> I saw this originally and meant to dig a bit.  Sorry for causing additional 
>>> work for you.  Here is a widget script that does pretty much what you are 
>>> doing but leverages a way of array access that isn’t obvious.
>>> 
>>> https://github.com/bwmilby/DocEditorPlus/blob/master/DocEditorPlus_Scripts/stack_DocEditorPlus_widget_id_1008.livecodescript
>>> 
>>> You should not need to use a case statement.  In my case the value was HTML 
>>> in one case but plain text otherwise.
>>> 
>>> It is part of a more involved stack, but the card with this widget may be 
>>> helpful for your purposes.
>>> 
>>> Thanks,
>>> Brian
>>> 
>>> Sent from my iPhone
>>> 
>>>> On Dec 21, 2021, at 6:38 AM, Keith Clarke via 
>>>> use-livecode<[email protected]>  wrote:
>>>> 
>>>> Hi folks,
>>>> For future reference, below is how I managed to get this sorted. The 
>>>> solution seems rather ugly, but it works for the fixed depth of Tree View 
>>>> data I’m interested in.
>>>> 
>>>> The root cause seems to be down to the way LiveCode handles array keys 
>>>> passed in from variables. It doesn't seem possible to define a complete 
>>>> multidimensional array in as a text string (as one might build URLs with 
>>>> parameters). Rather, variables seem to be recognised and processed only if 
>>>> passed in for each individual array key, within its square brackets. 
>>>> Furthermore, the square brackets seem to need to be present in the markup 
>>>> of the array access call - hence the ugly switch statement with explicit 
>>>> cases for each level of Tree View depth rather than something more dynamic 
>>>> & generic...
>>>> on hiliteChanged
>>>> 
>>>> put the arrayData of control "Tree" into tTreeData
>>>> 
>>>> put the hilitedElement of control "Tree" into tHilitedElement
>>>> 
>>>> // Identify element depth
>>>> 
>>>> put the number of items in tHilitedElement into tDepth
>>>> 
>>>> put 0 into tLevelCount
>>>> 
>>>> repeat for each item tKey in tHilitedElement
>>>> 
>>>> add 1 to tLevelCount
>>>> 
>>>> put tKey into tLevel[tLevelCount]
>>>> 
>>>> put "[tLevel[" & tLevelCount & "]]" after tElement
>>>> 
>>>> end repeat
>>>> 
>>>> // Build array key to show element value in field
>>>> 
>>>> switch tDepth
>>>> 
>>>> case 1
>>>> 
>>>> put tTreeData[tLevel[1]] into field "Test"
>>>> 
>>>> break
>>>> 
>>>> case 2
>>>> 
>>>> put tTreeData[tLevel[1]][tLevel[2]] into field "Test"
>>>> 
>>>> break
>>>> 
>>>> case 3
>>>> 
>>>> put tTreeData[tLevel[1]][tLevel[2]][tLevel[3]] into field "Test"
>>>> 
>>>> break
>>>> 
>>>> end switch
>>>> 
>>>> end hiliteChanged
>>>> 
>>>> I’m sure the experienced developers here would find cleaner ways to 
>>>> achieve this but this hack works and I can get back to evaluating the data 
>>>> accessible from the PDF widget! :)
>>>> 
>>>> Best,
>>>> Keith
>>>> 
>>>>> On 20 Dec 2021, at 21:13, Keith Clarke via 
>>>>> use-livecode<[email protected]>  wrote:
>>>>> 
>>>>> I’m using the Tree View widget to provide a quick and dirty read-only 
>>>>> display of the various arrays of information that can be extracted from 
>>>>> the PDF Widget.
>>>>> 
>>>>> Each PDF page contains too much text to read & understand within the 
>>>>> constraints of a single line in a Tree View control. So, on highlighting 
>>>>> an element in the Tree View, I want to display its value - such as 
>>>>> arrayData[“Pages”][“1”][“text”] - into a field to read the detail 
>>>>> extracted. (Currently I’m putting it into the message box as an interim 
>>>>> step, as I tend to build & debug my scripts line by line and this is as 
>>>>> far as I’ve got!)
>>>>> 
>>>>> I may have misread the docs but it seems that when a Tree View element is 
>>>>> hilited, one doesn’t get immediate access to the element’s value. 
>>>>> Instead, one has to jump through hoops, by handling the hilitedElement, 
>>>>> which returns the nested keys of the element. So, I’m simply trying to 
>>>>> convert this comma-separated list to an array reference, so that I can 
>>>>> get the value associated with this key.
>>>>> 
>>>>> If I’ve missed a simple means to access the Tree View element’s value 
>>>>> directly ‘on click', I’ll gladly change course!
>>>>> Best,
>>>>> Keith
>>>>> 
>>>>>>> On 20 Dec 2021, at 20:46, J. Landman Gay via 
>>>>>>> use-livecode<[email protected]>  wrote:
>>>>>> I'm confused about what the goal is. The hilitedElement contains the 
>>>>>> text of the selection. The array is already in place, so you don't 
>>>>>> really need to add to it.
>>>>>> 
>>>>>> The reason you're seeing text in the message box is because the last 
>>>>>> line contains an unspecified "put". Without a destination for the "put" 
>>>>>> it will go automatically to the message box. If you want to work with 
>>>>>> it, you'd need to put the value into a variable.
>>>>>> 
>>>>>> What's the purpose of the concatenation, and what do you want to do with 
>>>>>> the selection?
>>>>>> 
>>>>>> On 12/20/21 11:11 AM, Keith Clarke via use-livecode wrote:
>>>>>>> Hi folks,
>>>>>>> I’m struggling to access the value from a Tree View widget’s data array 
>>>>>>> as the hilitedElement changes - though I think my issue is more about 
>>>>>>> working with arrays than the Tree View widget.
>>>>>>> The following test script (on the Tree widget) successfully gets the 
>>>>>>> Tree’s arrayData into tTreeData and creates a ‘correct-looking’ nested 
>>>>>>> array key syntax for any changing tHilitedElement.
>>>>>>> However, the last line displays the tHilitedElement variable string in 
>>>>>>> the message box rather than concatenating it to tTreeData as the nested 
>>>>>>> key to return the element’s value.
>>>>>>> on hiliteChanged
>>>>>>> put the hilitedElement of me into tHilitedElement
>>>>>>> if char -1 of tHilitedElement is comma then delete char -1 of 
>>>>>>> tHilitedElement
>>>>>>> replace comma with quote & "][" & quote in tHilitedElement
>>>>>>> put "[" & quote before tHilitedElement
>>>>>>> put quote & "]" after tHilitedElement
>>>>>>> put the arrayData of me into tTreeData
>>>>>>> put tTreeData & tHilitedElement
>>>>>>> end hiliteChanged
>>>>>>> I’ve tried various forms of brackets around the tHilitedElement 
>>>>>>> variable containing the nested key string with no success - what am I 
>>>>>>> doing wrong?
>>>>>>> TIA.
>>>>>>> Best,
>>>>>>> Keith
>>>>>>> _______________________________________________
>>>>>>> use-livecode mailing list
>>>>>>> [email protected]
>>>>>>> Please visit this url to subscribe, unsubscribe and manage your 
>>>>>>> subscription preferences:
>>>>>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>>>>> 
>>>>>> -- 
>>>>>> Jacqueline Landman Gay         |[email protected]
>>>>>> HyperActive Software           |http://www.hyperactivesw.com
>>>>>> _______________________________________________
>>>>>> use-livecode mailing list
>>>>>> [email protected]
>>>>>> Please visit this url to subscribe, unsubscribe and manage your 
>>>>>> subscription preferences:
>>>>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>>>> 
>>>>> _______________________________________________
>>>>> use-livecode mailing list
>>>>> [email protected]
>>>>> Please visit this url to subscribe, unsubscribe and manage your 
>>>>> subscription preferences:
>>>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>>> _______________________________________________
>>>> use-livecode mailing list
>>>> [email protected]
>>>> Please visit this url to subscribe, unsubscribe and manage your 
>>>> subscription preferences:
>>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>> _______________________________________________
>>> use-livecode mailing list
>>> [email protected]
>>> Please visit this url to subscribe, unsubscribe and manage your 
>>> subscription preferences:
>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>> _______________________________________________
>> use-livecode mailing list
>> [email protected]
>> Please visit this url to subscribe, unsubscribe and manage your subscription 
>> preferences:
>> http://lists.runrev.com/mailman/listinfo/use-livecode
> 
> _______________________________________________
> use-livecode mailing list
> [email protected]
> Please visit this url to subscribe, unsubscribe and manage your subscription 
> preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode

_______________________________________________
use-livecode mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to