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
