The Owner of a background group

Peter M. Brigham pmbrig at gmail.com
Tue Aug 21 11:17:19 EDT 2012


I have sometimes been tripped up by the fact the the long id of a control is in fact not very robust, in the sense that it will vary depending on which card you are currently on and where the stack is stored on disk. I needed a long ID equivalent that would be consistent no matter where it was called from, so I wrote a virtual property handler:

getProp robustID
   ----  a virtual property, read only  ----
   -- the robustID is consistent no matter what card is current
   -- and no matter which folder the user has stored the stack in;
   -- format: button id 1039 of bkgnd id 1003 of stack "subStack1"
   --            of stack "tMainStack"
   -- the robustID can be used as a complete object reference,
   --    just like the long ID
   
   put numtochar(6) into delim1
   put numtochar(7) into delim2
   put the long id of the target into tLongID
   replace " stack " with delim1 in tLongID
   set the itemdelimiter to delim1
   put item -1 of tLongID into mainStackFileName
   if not (word 1 of mainStackFileName = "stack") then
      put "stack " before mainStackFileName
   end if
   put the short name of mainStackFileName into mainStackName
   put quote & mainStackName & quote into item -1 of tLongID
   replace delim1 with " stack " in tLongID
   replace " of " with delim2 in tLongID
   set the itemdelimiter to delim2
   put itemoffset("card",tLongID) into cdItemNbr
   if cdItemNbr > 1 then delete item cdItemNbr of tLongID
   replace delim2 with " of " in tLongID
   replace "group" with "bkgnd" in tLongID
   -- in case the group is not placed on the currentcard
   return tLongID
end robustID

-- Peter

Peter M. Brigham
pmbrig at gmail.com
http://home.comcast.net/~pmbrig


On Aug 20, 2012, at 5:28 PM, DunbarX at aol.com wrote:

> Bob.
> 
> It seems more natural to me that the owner is the current card. It makes the message hierarchy consistent.
> 
> The "progenitor" could be a property as you suggest, but since this is not native, just set a custom property of the group to the id of the card that gave it birth. You then get everything you could ask for.
> 
> 
> Bob Sneidar <bobs at twft.com> wrote
> 
>> Never mind works the same either way. Frankly, I would like the owner to return 
>> the card it was originally on. It seems confusing to me that the owner would 
>> change when the active card changes. Doesn't seem intuitive. I suppose however, 
>> this might allow for the deletion of the "owner" card without deleting the group 
>> that is placed on multiple cards. 
>> 
>> I thought it might be related to behaviors but nada. I cannot make it work where 
>> the owner is the first card the group was placed on/created on. 





More information about the use-livecode mailing list