#!/bin/sh # MetaCard 2.4 stack # The following is not ASCII text, # so now would be a good time to q out of more exec mc $0 "$@" Managing Menus2"/* Menu Stack By Eric Chatonet 3/3/05 http://www.sosmartsoftware.com/ */ on preOpenStack if the short name of me <> the short name of this stack then exit preOpenStack set the showBorder of btn "PullDown Menu" to the platform = "MacOS" set the style of this stack to modeless set the loc of this stack to the screenLoc end preOpenStack ------------------------------------ on commandKeyDown pKey local tStackName ----- put "You press Command/Control" && toUpper(pKey) into fld "Result" -- for demo purpose ----- switch pKey case "a" put "revApplicationOverview" into tStackName break case "b" put "revDBQuerySetup" into tStackName break case "c" put "revMenuManager" into tStackName break case "d" put "Message Box" into tStackName break case "e" put "revTools" into tStackName break default pass commandKeyDown end switch ----- if tStackName is among the lines of the openStacks then GoStack tStackName -- -- we could have put this line directly into each case of the switch structure -- using a variable minimizes typing effort and makes the handler clearer :-) -- see GoStack handler below end commandKeyDown ------------------------------------ on GoStack pStack -- this handler is called by the menuPick handler placed in the menu button script -- and by the commandKeyDown handler over there -- pStack parameter is the short name of the stack the user chose go stack pStack end GoStack Bulding Menus on the Fly ULucida Grande ULucida Grande WLucida Grande WLucida Grande WCourier UCourier UCourier UCourier AULucida GrandePulldown Menu cREVGeneral scriptChecksumµ!D7 debugObjects breakPoints handlerList#preOpenStack commandKeyDown GoStackscriptSelectionchar 346 to 345 bookmarks tempScript prevHandlercommandKeyDownscript

/*

Menu Stack

By Eric Chatonet

3/3/05

http://www.sosmartsoftware.com/

*/

on preOpenStack

if the short name of me <> the short name of this stack then exit preOpenStack

set the showBorder of btn "PullDown Menu" to the platform = "MacOS"

set the style of this stack to modeless

set the loc of this stack to the screenLoc

end preOpenStack

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

on commandKeyDown pKey

local tStackName

-----

put "You press Command/Control" && toUpper(pKey) into fld "Result" -- for demo purpose

-----

switch pKey

case "a"

put "revApplicationOverview" into tStackName

break

case "b"

put "revDBQuerySetup" into tStackName

break

case "c"

put "revMenuManager" into tStackName

break

case "d"

put "Message Box" into tStackName

break

case "e"

put "revTools" into tStackName

break

default

pass commandKeyDown

end switch

-----

if tStackName is among the lines of the openStacks then GoStack tStackName -- 

-- we could have put this line directly into each case of the switch structure

-- using a variable minimizes typing effort and makes the handler clearer :-)

-- see GoStack handler below

end commandKeyDown

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

on GoStack pStack

-- this handler is called by the menuPick handler placed in the menu button script

-- and by the commandKeyDown handler over there

-- pStack parameter is the short name of the stack the user chose

go stack pStack

end GoStack

 @  cREVGeneralscriptChecksumُ B~ bookmarks handlerListscriptSelection char 1 to 0 prevHandler preOpenCard tempScriptscript

@ BlackCheckmark.png PNG  IHDR  pHYs  gAMA|Q cHRMz%u0`:o_FxIDATxb` 17 R@L:̤/@,0@1I +x%@LħHW ť$@PIV dĊK806IENDB` cREVGeneral revUniqueID 1109347801497 CheckBox i -M  cREVGeneral revUniqueID 1109350058804Pulldown Menu uon mouseDown local tMenu,tOpenStacks,tLineNum,tStack,tOpenStacksList ----- first, we get the outline stored as a custom property into the button itself: put the uMenu of me into tMenu -- this outline only contains invariant elements: see it using the property palette ----- we check the right platform: put "!c" before line lineOffset(the platform,tMenu) of tMenu -- "!c" at the beginning of a line will checkmark the corresponding menu or sub-menu item ----- we check available tools sub-menu items: put the openStacks into tOpenStacks set the itemDel to tab if "revApplicationOverview" is not among the lines of tOpenStacks then put "(" before last item of line lineOffset("Application Browser",tMenu) of tMenu if "revDBQuerySetup" is not among the lines of tOpenStacks then put "(" before last item of line lineOffset("Database Query Builder",tMenu) of tMenu if "revMenuManager" is not among the lines of tOpenStacks then put "(" before last item of line lineOffset("Menu Builder",tMenu) of tMenu if "Message Box" is not among the lines of tOpenStacks then put "(" before last item of line lineOffset("Message Box",tMenu) of tMenu if "revTools" is not among the lines of tOpenStacks then put "(" before last item of line lineOffset("Tools Palette",tMenu) of tMenu -- a parenthesis at the beginning of a line will disable the corresponding menu or sub-menu item -- note that for most of these tools, rev stack's names are not the names we are used to ;-) ----- we list all open stacks as sub menu items: repeat for each line tStack in tOpenStacks -- repeat for form is always better than repeat with i = 1 to etc. form (above all in case of numerous loops) put tab & tStack & cr after tOpenStacksList -- tab makes each stack a submenu item end repeat delete last char of tOpenStacksList -- last char is a return put return & tOpenStacksList after line lineOffset("Available Stacks",tMenu) of tMenu -- I know: "Available Stacks" is the first line of the menu but, when developing further and changing my mind... -- using lineOffset function instead of line x of tMenu lets you change the outline without any garbage :-) ----- menu is now built: set the text of me to tMenu -- here the menu stays very simple for the demo purpose -- sometimes several hundreds of lines of code can be necessary... -- when building a complex menu with sub/sub... menu items and nested lists, pay special attention to returns and tabs end mouseDown ------------------------------------- on menuPick pItem -- this handler is here for demonstrating the principles of a complete menuPick architecture -- with nested switch structures ----- set the itemDel to "|" -- switch item 1 of pItem case "Available Stacks" -- you don't know the exact contents of the sub-menu item but it does not matter -- since you know that is the short name of an open stack GoStack item 2 of pItem -- S -- item 2 of pItem is the short name of an open stack: it is passed as a parameter -- see GoStack handler in stack's script break case "Open Tools" -- menu item switch item 2 of pItem case "Application Browser" GoStack "revApplicationOverview" -- S -- item 2 of pItem is not the short name of an open stack: parameter is especially defined for each case -- see GoStack handler in stack's script break case "Database Query Builder" GoStack "revDBQuerySetup" -- S break case "Menu Builder" GoStack "revMenuManager" -- S break case "Message Box" GoStack item 2 of pItem -- S -- here we can use the sub menu item: it's the effective short stack name break case "Tools Palette" GoStack "revTools" -- S end switch break case "Platform" -- another menu item -- etc. end switch ----- put item 1 of pItem && ">" && item 2 of pItem into fld "Result" -- for demo purpose end menuPick function DisableMenuItem pItem if pItem = empty then return pItem set the itemDel to tab repeat with i = 1 to the number of items of pItem if item i of pItem <> empty then put "(" before item i of pItem exit repeat end if end repeat return pItem end DisableMenuItem fYxuMenuAvailable Stacks Open Tools Application Browser/A Database Query Builder/B Menu Builder/C Message Box/D Tools Palette/E - Platform MacOS Win32 Linux - HP-9000//700 SGI IRIS IBM RS//6000 Intel SCO Intel SVR4 SPARC SPARC Solaris Available Stacks Managing Menus Message Box rev_Color Picker 1.0 rev_Backups Picker 1.1 revTools rev_Objects Picker 1.0 revVGuide revHGuide Stacks Picker 1.0 TutorialsFromS3 rev_Guides Picker 2.0 Untitled 1 Report Picker 1.0 Windows Picker 1.0 revMenubar Open Tools (Application Browser/A (Database Query Builder/B (Menu Builder/C Message Box/D Tools Palette/E - Platform !c MacOS Win32 Linux - HP-9000//700 SGI IRIS IBM RS//6000 Intel SCO Intel SVR4 SPARC SPARC Solaris  cREVGeneralscriptChecksum%#=Ta7QF bookmarks revUniqueID 1109456569474 handlerList"mouseDown menuPick DisableMenuItemscriptSelectionchar 996 to 1091 prevHandler mouseDown tempScriptscript(

on mouseDown

local tMenu,tOpenStacks,tLineNum,tStack,tOpenStacksList

----- first, we get the outline stored as a custom property into the button itself:

put the uMenu of me into tMenu

-- this outline only contains invariant elements: see it using the property palette

----- we check the right platform:

put "!c" before line lineOffset(the platform,tMenu) of tMenu

-- "!c" at the beginning of a line will checkmark the corresponding menu or sub-menu item

----- we check available tools sub-menu items:

put the openStacks into tOpenStacks

set the itemDel to tab

if "revApplicationOverview" is not among the lines of tOpenStacks then put "(" before last item of line lineOffset("Application Browser",tMenu) of tMenu

if "revDBQuerySetup" is not among the lines of tOpenStacks then put "(" before last item of line lineOffset("Database Query Builder",tMenu) of tMenu

if "revMenuManager" is not among the lines of tOpenStacks then put "(" before last item of line lineOffset("Menu Builder",tMenu) of tMenu

if "Message Box" is not among the lines of tOpenStacks then put "(" before last item of line lineOffset("Message Box",tMenu) of tMenu

if "revTools" is not among the lines of tOpenStacks then put "(" before last item of line lineOffset("Tools Palette",tMenu) of tMenu

-- a parenthesis at the beginning of a line will disable the corresponding menu or sub-menu item

-- note that for most of these tools, rev stack's names are not the names we are used to ;-)

----- we list all open stacks as sub menu items:

repeat for each line tStack in tOpenStacks

-- repeat for form is always better than repeat with i = 1 to etc. form (above all in case of numerous loops)

put tab & tStack & cr after tOpenStacksList

-- tab makes each stack a submenu item

end repeat

delete last char of tOpenStacksList -- last char is a return

put return & tOpenStacksList after line lineOffset("Available Stacks",tMenu) of tMenu

-- I know: "Available Stacks" is the first line of the menu but, when developing further and changing my mind...

-- using lineOffset function instead of line x of tMenu lets you change the outline without any garbage :-)

----- menu is now built:

set the text of me to tMenu

-- here the menu stays very simple for the demo purpose

-- sometimes several hundreds of lines of code can be necessary...

-- when building a complex menu with sub/sub... menu items and nested lists, pay special attention to returns and tabs

end mouseDown

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

on menuPick pItem

-- this handler is here for demonstrating the principles of a complete menuPick architecture

-- with nested switch structures

-----

set the itemDel to "|"

--

switch item 1 of pItem

case "Available Stacks"

-- you don't know the exact contents of the sub-menu item but it does not matter

-- since you know that is the short name of an open stack

GoStack item 2 of pItem -- S

-- item 2 of pItem is the short name of an open stack: it is passed as a parameter

-- see GoStack handler in stack's script

break

case "Open Tools" -- menu item

switch item 2 of pItem

case "Application Browser"

GoStack "revApplicationOverview" -- S

-- item 2 of pItem is not the short name of an open stack: parameter is especially defined for each case

-- see GoStack handler in stack's script

break

case "Database Query Builder"

GoStack "revDBQuerySetup" -- S

break

case "Menu Builder"

GoStack "revMenuManager" -- S

break

case "Message Box"

GoStack item 2 of pItem -- S

-- here we can use the sub menu item: it's the effective short stack name

break

case "Tools Palette"

GoStack "revTools" -- S

end switch

break

case "Platform" -- another menu item

-- etc.

end switch

-----

put item 1 of pItem && ">" && item 2 of pItem into fld "Result" -- for demo purpose

end menuPick

function DisableMenuItem pItem

if pItem = empty then return pItem

set the itemDel to tab

repeat with i = 1 to the number of items of pItem

if item i of pItem <> empty then

put "(" before item i of pItem

exit repeat

end if

end repeat

return pItem

end DisableMenuItem

 Label Field &:B cREVGeneral revUniqueID 1109457358913 Result:  Result 0=on mouseDoubleUp put empty into target end mouseDoubleUp @f:e cREVGeneralscriptChecksumYN3r7.Z|A3p revUniqueID 1109457363044 bookmarks handlerList mouseDoubleUp tempScript prevHandlerscriptSelection char 41 to 40script

on mouseDoubleUp

put empty into target

end mouseDoubleUp

  Info p6on linkClicked go stack "revDocs" end linkClicked  cREVGeneralscriptChecksum eyj֤s revUniqueID 1109350253372 bookmarks handlerList linkClicked tempScript prevHandlerscriptSelection char 36 to 35script

on linkClicked

go stack "revDocs"

end linkClicked

 #How-To stack #008 by Eric Chatonet " 3/3/05 Initial release   <5/18/05 Revision due to submenus behaviour with Rev 2.5.1.  4 45/27/05 Modified for Tutorial Picker compatibility @ @, This stack shows how to build on the fly a menu with sub-menu items, disabled and checkmarked menu items, etc. and how to respond to the user actions. @ Enjoy! @ To build menus, Revolution provides the Menu Builder, an interesting tool that lets you build static menus without sub menus :-( @( @( @4L An yet, most of the times, you will need to display dynamic contents according to the context: checkmarked, disabled menu items, include lists built on the fly and so on. Let us see how to... @  Storing the outline @1600  @ xTo build easily any menu, the first step is to store the outline of the menu that will include invariant elements only. @_ @_ @q hIn our menu, the sub menu of the first main item depends on the current environment: we can't store it. @g NBut the sub menus of the last two main items never change: we can store them. @M TSo we build the outline ignoring checkmarks, disabled menu items and unknown items: @S Available Stacks  Open Tools   Application Browser/A   Database Query Builder/B   Menu Builder/C   Message Box/D   Tools Palette/E  -  Platform   MacOS   Win32   Linux   -   HP-9000//700  SGI IRIS   IBM RS//6000  Intel SCO  Intel SVR4   SPARC   SPARC Solaris  aNote that the first letter of all words except articles, prepositions, etc. must be capitalized. @` #A dash indicates a separator line. @ @ @ MA tab indicates that the correponding line has to appear as a sub-menu item. @ @ @G aTrick: if you can't type tab, use the result field of the message box anf copy it from there :-) @` QA slash followed by any char at the end of a line indicates a keyboard shortcut. @ @ @I Two items in Platform sub-menu display a double slash that appears as a simple slash in the menu: if a simple slash was used, Revolution should unserstand it as a shortcut specification as in Open Tools sub-menu. @ @  @ @) @5 @ @ :When inserting & in a menu item, you have to type && too. @9 UIn the outline, the first menu item has no sub-menu items since they are unknown :-) @T It is handy to store this outline as a custom property into the menu button itself: in this stack, this custom property is named uMenu. @' @' @6K @ @  Building the complete menu @1600   ~From the stored outline, the complete menu according to the context is built in a mouseDown in the script of the button menu. @R @R @[" gJust get back the custom property into a variable (here named tMenu) and turn it into a complete menu: @) @) @1 @> @C# put the uMenu of me into tMenu  @  @  ( Refering to a menu or a sub-menu item @1600  @% mTo refer to any menu or sub-menu item, don't use something like line x of tMenu: it's a static reference :-( @@ @@ @O aThe right method is to use lineOffset function even if you refer to the first line of the menu: @ @ @&: / put lineOffset("Platform",tMenu) into tLineNo   @ @   -- for a menu item  @hh"" @ put lineOffset(tab & "Application Browser",tMenu) into tLineNo   @ @ @ ) -- for a sub-menu item (row 2)  @hh"" @hh"" JUsing lineOffset function lets you always get dynamically the right item. @ @ @9 ]Then you can change the outline, add items, move other ones: menu building will always work. @\ +Tip: When some sub-menu items appear more than once in a menu, you will have to use a double lineOffset: the first one to locate the right menu item and then, using this value to specify how many lines to skip, find the right sub-menu item. See the Revolution Documentation about lineOffset syntax. @ @Z @] @g  @ @ @" D Adding a sub-menu built on the fly (as Available Stacks sub-menu) @1600  @" @$ @) @9 In our example, we build the list of the open stacks and add it after the first menu item (lineOffset("Available Stacks",tMenu) :-): see the fully commented script. @W W [(  @ ENote that you have got to be careful with carriage returns and tabs. @D 5 Checkmarking a menu item (as in Platform sub-menu) @1600  @ @ @" @* _To checkmark a menu item, just add !c before a menu item name: see the fully commented script. @" @" @%9 At the moment, you need not to add !c strictly before a menu item name if it contains some tabs (you may add !c at the beginning of the line) but I have prefered to follow the new rules since 2.5.1. @ 4 Disabling a menu item (as in Open Tools sub-menu) @1600  @ @ @ @) ETo disable a menu item, just add a parenthesis just before its name: @ @  @. @  (Available Stacks  (Untitled 1 @ Caution: When disabling a submenu item with versions prior to 2.5.1, you could add a parenthesis at the beginning of the line disregarding the tabs. With Rev 2.5.1 you can't do it ! @ @  Setting the menu @1600   KOnce the menu built, just set the text of the button menu to the variable: @J  set the text of me to tMenu  @  @   @  Responding to the user choice @1600   When the user chooses a menu item, Revolution sends a menuPick message to the corresponding button with a parameter that contains the path of the chosen menu item in the menu: @6 @6 @>H @ @% 9Main menu item | sub menu item 2 | sub menu item 5, etc. @8 WThe parameter uses a special item delimiter, a vertical bar: | that is charToNum(124). @V -(You type it with option/shift/L on Mac OS.) @, To respond to a menuPick message, the right way, above all in case of numerous menu items, is to use a switch structure (with nested other switch structures if needed): see the menu button script. @ @ @O @g @m @ @3 Usually, the menuPick handler does not include the code that has to be executed but refers to another handler(s) placed in stack's script. @ @  @# 8S Then you wiill be able to use these handlers from another location to respond to buttons which allow the same action, keyboard shortcuts, etc.   #k # Responding to keyboard shortcuts @1600   Responding to keyboard shortcuts (when the user press command/control and another key) needs to trap the commandKeyDown message. @i @i @w Usually, the commandKeyDown handler will be placed in stack's script to be available anywhere and will call the same handlers used in the menuPick handler: see stack's script. @ @  @o @ @ 3Generally speaking, keep in mind an important thing about coding: never repeat any handler twice in your stack. The more often possible, use handlers with parameters, functions with arguments to minimize you code and make it more reliable, more flexible... and accepting easy corrections in a single place! @2  About contextual menus @1600   ^When you call contextual menus, remember that habits are different according to the platform: @] \You will use a mouseDown handler with MacOS and a mouseUp handler with all other platforms: @ @ @ @2 @9" @  on mouseDown pButton  @brown  2 if the platform = "MacOS" and pButton = 3 then   @brown  @ darkorange  @brown-  BuildMyMenu  @brown   popup btn "MyMenu"  @blue end if   @brown  @brown  end mouseDown  @brown   ------------------------  @hh"" DarkOrchid4 on mouseUp  @brown  3 if the platform <> "MacOS" and pButton = 3 then   @brown  @ darkorange  @brown.  BuildMyMenu  @brown   popup btn "MyMenu"  @blue end if   @brown  @brown end mouseUp  @brown  @ `SSS.png  Hon mouseDown revGoUrl "http://www.sosmartsoftware.com" end mouseDown "-PNG  IHDR". pHYs.#.#x?v 9iCCPPhotoshop ICC profilexڝwTTϽwz0z.0. Qf Ml@DEHb!(`HPb0dFJ|yyǽgs{.$O./ 'z8WGбx0Y驾A@$/7z HeOOҬT_lN:K"N3"$F/JPrb[䥟}Qd[Sl1x{#bG\NoX3I[ql2$ 8xtrp/8 pCfq.Knjm͠{r28?.)ɩL^6g,qm"[Z[Z~Q7%" 3R`̊j[~: w!$E}kyhyRm333: }=#vʉe tqX)I)B>== <8Xȉ9yP:8p΍Lg kk Ѐ$t!0V87`ɀ2A. @JPA#h'@8 .: ``a!2D!UH 2 dA>P ECqB**Z:]B=h~L2  5pN:|ó@ QC !H,G6 H9R ]H/r Aw( Q(OTJCm@*QGQ-(j MF+ 6h/*t:].G7Зw7 Xa<1:L1s3bXyeb~19 vGĩp+5qy^ oó|= ?'Htv`Ba3BDxHxE$Չ"XAP44077&9$An0;T2421t.54ld+s;# V]=iY9FgM֚k&=%Ō:nc1gcbcfX.}lGv{c)LŖN퉛w/p+/<j$.$%&㒣OdxTԂԑ4i3|o~C:&S@L u[Uo3C3OfIgwdO|;W-wsz 17jl8c͉̈́3+{%lKWr[ $ llGmnacOkE&EEY׾2⫅;K,KhtiN=e²{^-_V^Oo§s]?TWީrjVQ=w}`嚢zԶiו8>k׍ E  [ly邟~_Y53rW򯎼^{7so}x>|쇊z>yzgAMA|Q cHRMz%u0`:o_F"IDATxbax& O?"?z$<@,X< dz,,2{H?Hk4^B˧̌<4i_rD@,hgaӊb:޾zo]ǷDr8 4y6{5ݕ]WMż#٩ƧoZQqm8$Iyon0w 3+ `8 K d+ ,?ۏҟ]xۥW/~g33+?@S_B9.3_823J{;kc :e'HfCqΈ#{x#Sxs`]Ϛ[^>Y5c+?8r2,FF zh(~(M Ѱ狻v%?d|\>}aeE,^%oΦU{ǃ_Tdگ?w>ytfo <"JYղC"%.686lq-dG &pK\j{H@FeoFWwnAςDE|Փg{Y8~#%̅~f^U8]#50Ln>n^>~f[v6&߰ d cvF>H?~ߟ郹,",Z9}WX%ëXDHĄŠ 9J02qrrﳃ_+yop6E[?;3R.QYy844>?ǛGW50s[s|DYޜs%fq-9_KLu~W=\j^n+!a&lgǯ^ӏ]m rB#ǻ? hV.n6%Lz<х ;'￿ ?g{3蟿~/,r6 ~rOmsy9<9'x9 s-RXxծ|:,>̲ܿ?R= w3< 0 C_>;%'o3_?*imcރ?"2BqN.z6UI/"N~|zʲ/Ho_8AII[9Ԟ|d/O^0Q-$*ۻ= ?:Ű̢*'c*fy_ο> ^Q0si.c``_̒NL l [{p H),x]^ F o1ٍ-w}R0XxkqF_bh6^ . f6F Y. M;S.!IΞz+ *rO3߿z:;;El9%5<{{ˣa!0F6q!qNq M ߿,Oمye-d~82ċsɫ }?R\]WɫJEYDMI\XBV^]$L\ҺJj\6_d x }#ǩB__=r{ 73昳ps0+hڙ7}T~˻oya!!#v</^#.+YXUGN?FSHERTYQHXVDWߞ\RP&-<*e|o:ԹDZO\C7VUAqc㗶ɔ2SRS^!ѕ򊼡r2\vont@W޳2.>eͩ\Pvw׾zY-NݛoM7+Iq+Z( V2{sW/~PvKꙟ(wnZ_V!_xDľTbƯ@I]u &vnn:aAJJ}0-{aQf_>\~A>/x a|x]=҆'?X=ۜ\VqIe̩>[g$\be4 KkabEXOH9 ϟqɍO^-V`ʇ{<~y1I 2sps2 }g,,j2 UWUgWĿ630~}go |mĦ#".$"oϸd⃥>_v>AFN~A&HFLOhpIY PW&У O7., ٲ;|e  ,(|w(㷕 ~ մ6岛6mcC  ŋ"Ogw^z`)PK(B ]SLhُn gyf quc|xw铦-Wfh9Ӌn?zzȅ<U6t5J{ʜ&'O;/?_SģNZƯƐ1D#Ey8rD9*{2hl8zi{᧖UqP$(M[QWc 'Ӆn@ȏ>ov7V9:V Ɇ12 QWB`"EkyщYeWާӝwZ\i+7M4+' 6 7J7tAcV3! abF$Lup!5ӭ4ՠn es=>zZ$g?./}<9YS8RGJRpVܩ-M/)=PXT<_1CWMr!lqy[KIE 1A fzY-3W‘W]d7ۑRVͿ h(Tb 69|yfʖ V&%a&'Jt^c N@JXJԎ0yof6>0S'_!à-c0_cFˮ ¶ 2.5 XjS%-X%ԑ0ꀣÝz]m?^8%g*@̶2)x+[V,$p59'>qdI@%˟x/Ⱥ)e9RJ)sRCbN+$ %\w7[:·mwhMNl'bIг܂:m֐kuF]i.w/_ߞo]e3 p ؂_.b,&kWLZSϯ_nlvӓ~K@LTKT]PRV }xuc&G%+v6FQIUVPqyV<<>~z';;0v..Vf&fv6VfV`A痏RQJEME&X@w2(9XW.wLrjɲ&(A[հxUe||RZ*)b< D.N`Q+,'ۤ ԳQxɗ<~}i]`b'lg54`g|}ƉOOE.FB XKl ɻuVGDTT`}yBXvRbgW1P燔vx4v  _vM{Dun` `C73\&vU+_R^;LJן_]>[DLk~5+RigvYJQˏ[̎ZN32;?߿???ٝ;?>|sbҒڞR?>~x!*h/|&xwoJDX̎[cƒ+_ X'*fZ+k”WCּs Ý _=l>$ٹ#WTOGOGp[`0W'=?Ǡw\"zi+'Z{7Μ r7/_ZAˋfeTxoW@Ps&on?MM(WT ֥y E 6!ßon7?ҿ?>zr[ Ƿ7?y򆘦<^\۽bꅅ Wuov>ZBݩ>SV'_]:2@W_?6Zd~|t󯰲S_:w5w~O_7;GL7H^츹kfamo>xtv!޳+O=`F`]7^\9xɉ-o8ee~¯oo iWԿ=4!MU3A~1?@KOa}`~H/7737?>o(2A_?{u'>7 `==Wpi}dϧ'v.Ⱦ2Y^<ӇXyy~~{'6~u+h ë >q^!eV w2{*wξ ?pf/+po?>+a%,-G!xs{ UziN:Lȉj?bFbFZ`X!C_5 lfUHv#H{ y*ϊa-Xc \|(:mJ[}pwwK\ӻ^7#`@jE f{&0HaOeR^b:"8r G#Rτ%P>-Z[XhWCC VAGL[X _DGY36ؘs`AX@z?6e_4B+LI=88hY X"=G1"978H3X˄ ۦ { nfh !l8t~C)yyޞoՙoo-Hu,k-Te5ʈfFK\{Hpehu?" GDÆGZK'h?D⡕B>,,7ug'H= `ı} /Q@60,lk1'!l"F?M!H \2nha?h"?͈+#Ă'?[BX?Z'$V} e@)ii@:TZVJ@, \͌o'zM[{@D}3<bhT``4Ӥ(IENDB` cREVGeneralscriptChecksum`}^.e bookmarks revUniqueID 1109350299073 handlerList mouseDownscriptSelection char 13 to 12 prevHandler tempScriptscript

on mouseDown

revGoUrl "http://www.sosmartsoftware.com"

end mouseDown

@ Flche2.png z PNG  IHDR Kpl_ pHYs  gAMA|Q cHRMz%u0`:o_FIDATxb?,Xv$ϯ.?~~e'P#@11 @?~23_k_?V@p /÷>|()%ţ,%-F2\@ *n w JU牓/_ o_ū(II` b`AM]Nk5 _ ,?d+@021~K?@fӬ ~W XXY};w<||| ߿}Kw^W@koǑ74;Gڷo_߿uLL7qe`&Fqϟ_sPuFFfbA8`(10r=zk~ TxNP`=l|,IENDB` cREVGeneral revUniqueID 1109350346443  Label Field  cREVGeneral revUniqueID 1109354974199 IPlay with the menu below, change your environment and see the scripts... Show ScriptsEpaon mouseUp edit the script of this stack edit the script of btn "Pulldown Menu" end mouseUp gXd cREVGeneralscriptChecksumi/zR revUniqueID 1109456710609 bookmarks handlerListmouseUp tempScript prevHandlermouseUpscriptSelection char 43 to 42script3

on mouseUp

edit the script of this stack

edit the script of btn "Pulldown Menu"

end mouseUp

PrintEpAon mouseUp revPrintField the name of field "Info" end mouseUp < cREVGeometry Master,expectedRect320,586,420,609Master,scalebottomDistanceMaster,movevDistance-73Master,moveVObjectSidebottomMaster,movehDistancefalseMastertrueMaster,scalerightDistanceMaster,moveVObjectRefcardMaster,moveVAbsolutetrueMaster,cardRanking1 Master,moveVtrueMaster,scaleleftDistanceMaster,scaletopDistance cREVGeneralscriptChecksum4p0G! bookmarks revUniqueID 1115824545996 handlerListmouseUpscriptSelection char 64 to 63 prevHandlermouseUp tempScriptscript

on mouseUp

revPrintField the name of field "Info"

end mouseUp