Panel/Form Widget

Sannyasin Brahmanathaswami brahma at hindu.org
Thu Apr 11 09:23:24 EDT 2019


 Richard Gaskin wrote:

    So for the foreseeable future, we have groups, sharable within a stack, 
    and clonable anywhere, even into other stacks.

---------------

BR: 

Jacques taught this trick, I sure others do  it also, but FWIW

Though "globals are bad" . I do use one global in the app for "fixed assets" and not for holding runtime variables.

 1) In init was we have

global sConfigA

2) start using "lib_CustomControl" # a binary stack, one group control per card
3) After all dependencies run, this:

on init_StoreControlsIds
   put the long id of group "share-ui" of card "share-ui" of stack "lib_CustomControls" into sConfigA["shareControl"]
   put the long id of group "answerDlgGrp" of card "answerDlgGrp" of stack "lib_CustomControls" into sConfigA["answerDialog"]
   put the long id of group "bottomToast" of card "dialog_CustomMsg" of stack "lib_CustomControls" into sConfigA["bottomToast"]
   put the long id of group "searchControls" of card "search" of stack "lib_CustomControls" into sConfigA["search"]
   put the long id of group "sound-is-playing" of card "sound-is-playing" of stack "lib_CustomControls" into sConfigA["soundIsPlaying"]
end init_StoreControlsIds

4) in any other stack we can do this:

Mouseup 

case "share"
         put sConfigA["shareControl"] into tShareControl  
         if (exists(group "share-ui" of this card) ) then 
            show group "share-ui" with visual dissolve very fast
         else          
            copy tShareControl to this card 
         end if
break

running script profiler on this, the clone and show on a mouseup doesn't seem to have any more than a 2 milliseconds hit on the CPU. Virtually, this method has zero performance penalty. Of course the group is a "View" and cannot contain persistence date.

Advantage is obvious: If you need to make a change to a group, you do so one place, and it will appear "everywhere"




More information about the Use-livecode mailing list