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 
> <use-livecode@lists.runrev.com> 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 
>> <use-livecode@lists.runrev.com> 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 
>>>> <use-livecode@lists.runrev.com> 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
>>>> use-livecode@lists.runrev.com
>>>> Please visit this url to subscribe, unsubscribe and manage your 
>>>> subscription preferences:
>>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>> 
>>> 
>>> -- 
>>> Jacqueline Landman Gay         |     jac...@hyperactivesw.com
>>> HyperActive Software           |     http://www.hyperactivesw.com
>>> _______________________________________________
>>> use-livecode mailing list
>>> use-livecode@lists.runrev.com
>>> Please visit this url to subscribe, unsubscribe and manage your 
>>> subscription preferences:
>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>> 
>> 
>> _______________________________________________
>> use-livecode mailing list
>> use-livecode@lists.runrev.com
>> Please visit this url to subscribe, unsubscribe and manage your subscription 
>> preferences:
>> http://lists.runrev.com/mailman/listinfo/use-livecode
> 
> _______________________________________________
> use-livecode mailing list
> use-livecode@lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription 
> preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to