Creating Stack via script help?
John Patten
johnpatten at mac.com
Sat Nov 20 20:37:34 EST 2004
Thanks Jacqueline!
Rev's a great product, but I think its real strength is in the communitty of users that use it! The users on this list are the best!
Thanks Again!
John Patten :-)
On Saturday, November 20, 2004, at 00:04AM, <use-revolution-request at lists.runrev.com> wrote:
------------
>
>Message: 14
>Date: Sat, 20 Nov 2004 00:01:21 -0600
>From: "J. Landman Gay" <jacque at hyperactivesw.com>
>Subject: Re: Creating Stack via script help?
>To: How to use Revolution <use-revolution at lists.runrev.com>
>Message-ID: <419EDDB1.8070203 at hyperactivesw.com>
>Content-Type: text/plain; charset=us-ascii; format=flowed
>
>On 11/19/04 4:09 PM, John Patten wrote:
>
>> I?m attempting to create a script, ?fishing through many of the
>> similar questions in the archive.
>>
>> I?ve been getting all kinds of strange results. I can get it to work,
>> sort of, but it seems to create multiple instances of the new stack
>> at times. And when I go into the Application Browser I see even more
>> of my inept attempts at getting this to work.
>
>I don't see anything in your script that would cause multiple stacks to
>be created, so what I suspect is happening in that you aren't deleting
>your previous trials before starting a new one. Closing a stack won't
>necessarily delete it from memory; you must specifically remove it. You
>can do that by choosing "Close and remove from memory" from the File
>menu, or by right-clicking the stack in the app browser and choosing the
>same thing from the contextual menu.
>
>> Here?s what I?ve been trying to do:
> >
>> On mouseDown
>> Ask file ?Save stack as:? --set path and filename for new stack
>> Put it into theNewStackname
>> Ask ?How many questions/cards??
>> Put it into x
>> Create stack theNewStackName with background ?quizTemplate?
>> Set the defaultstack to theNewStackName
>> Put 1 into y
>> Repeat x
>> Clone this card
>> Put y into cd fld ?TheCardNumber? --assuming that when you clone a card it becomes current card
>> Add 1 to y
>> End repeat
>> Put ?? into x
>> Put ?? iinto y
>> Put ?? into theNewStackname
>> End mousedown
>
>I'll have a go at this. First, I'd not trigger the action on a mousedown
>event; that prevents the user from changing their mind. Using mouseup is
>usually preferable, because it allows the user to click down on a
>button, change their mind, and slide off again without committing to the
>action. So I'd do this:
>
>on mouseUp
> ask file "Save stack as:" -- get path
> if it = "" then exit mouseup -- no name entered, or clicked "cancel"
> Put it into theStackPath
> ask "How many questions/cards?"
> if it = "" then exit mouseup -- let them back out here too
> Put it into x
>
>The "ask file" command returns a path (note it does not save the file to
>disk; it just gives you back a path) but you probably don't want the
>whole thing in the stack's title bar, so I'd extract a shorter name from
>the path to use as the stack name itself:
>
> set the itemDelimiter to "/"
> put last item of theStackPath into theNewStackName -- get a short name
> create stack theNewStackName with background "quizTemplate"
> set the defaultstack to theNewStackName
>
>Now to make the cards. Creating the stack already made one card, so we
>need one less than the user specified when running the repeat loop. We
>don't need to set a counting variable ("y" in your script) because we
>can use a built-in counter in the repeat loop itself. We do need to put
>a "1" into the field on the first card though, since we won't start
>counting until card 2:
>
> put "1" into fld "theCardNumber" -- on first card
> repeat with count = 2 to x -- we already have the first card, so start
>with 2
> create card
> put count into fld "theCardNumber"
> end repeat
>
>I usually use "create card" rather than "clone". I suppose this is
>personal preference, but it seems cleaner to me. A newly created card
>will automatically include the background (provided the group's
>backgroundBehavior is set to true,) so unless you need to copy over
>specific card properties, "create" works fine. If you've set up a bunch
>of card properties that you want to retain though, then cloning is one
>way to carry them over and you could use that instead. Another (possibly
>preferable) way to set up card properties is by setting properties in
>the templatecard before creating new cards.
>
>Finally, the stack hasn't been saved to disk yet. We have a file path
>chosen by the user, but we haven't done anything with it. So the last
>steps are to save the stack to disk:
>
> set the filename of this stack to theStackPath
> save this stack
>end mouseUp
>
>That's all you need to do, the handler can end here. You don't need to
>clean up any variables or memory, because local variables are
>automatically poofed out of existence when the handler ends. There isn't
>anything left to clean up. (This isn't true of script-local variables or
>global variables, but your handler doesn't have those.)
>
>The final script looks like this then:
>
>on mouseUp
> ask file "Save stack as:" -- get path from user
> if it = "" then exit mouseup -- escape clause
> put it into theStackPath -- store path here for later
> ask "How many questions/cards?"
> if it = "" then exit mouseup -- let them back out here too
> Put it into x -- store card count
> set the itemDelimiter to "/"
> put last item of theStackPath into theNewStackName -- get a short name
> create stack theNewStackName with background "quizTemplate"
> set the defaultstack to theNewStackName
> put "1" into fld "theCardNumber" -- on first card
> repeat with count = 2 to x -- start creating at 2nd card
> create card -- automatically adopts background
> put count into fld "theCardNumber" -- current card is latest one
> end repeat
> set the filename of this stack to theStackPath
> save this stack -- saves to disk
>end mouseUp
>
>> Eventually, I would like to create the new stack from a standalone,
>> so I?m also concerned that there will be other issues I need to be
>> aware of when doing this from a standalone? True? If so, like what?
>
>It should work fine from a standalone.
>
>--
>Jacqueline Landman Gay | jacque at hyperactivesw.com
>HyperActive Software | http://www.hyperactivesw.com
>
>------------------------------
>_______________________________________________
>use-revolution mailing list
>use-revolution at lists.runrev.com
>http://lists.runrev.com/mailman/listinfo/use-revolution
>
>End of use-revolution Digest, Vol 14, Issue 49
>**********************************************
>
>
More information about the use-livecode
mailing list