just in case
I'm guessing that this is unnecessary... Percodan is for treatment of severe pain, not for frustration. Excessive use can lead to addiction and it almost always causes severe constipation. Prune juice is probably a better accompaniment than wine ;-) At 8:39 AM -0500 10/4/06, Judy Perry wrote: Anybody sharing the love with Percodan/Percocet? Will share Wine Bottle... I'm willing to give it a generous try... :-) Judy -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list use-revolution@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Pricing / entry cost for this tool
Without telling me how much each segment earns, it can only be misleading to tell me what fraction of the taxes they pay. What is the source of your information? Does it include the necessary detail of incomes? I'm guessing it doesn't. At 10:46 PM -0600 26/11/05, [EMAIL PROTECTED] wrote: > At the moment, in your country and mine, the very wealthy pay very little tax. The top 1% earners in the US pay 34% of the taxes. The top 5% earners in the US pay 54% of the taxes. The top 50% earners in the US pay 97% of the taxes. If a wealthy person here is not paying much tax, it means they are likely going to not be wealthy much longer. Dennis -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list use-revolution@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Spelling out the license - protesting too much
At 8:47 AM -0600 23/11/05, David Bovill wrote: To avoid list clutter it would be a simple policy to add a license url to the default email header, and to add a EULA to the email list sign up process - that way everyone is clear what the terms of posting code to the list are. I can't let that comment go without putting my oar in. Do not mislead yourself into thinking that a sign up EULA would make anyone clear what the terms of posting code to the list are. EULAs are most often simply agreed to by the users without being read. I am constantly amazed that anyone is prepared to kid themselves that EULAs should be legally enforceable. It may make legal systems work smoothly to uphold a fiction that people read, understand and agree to the terms in EULAs, but it is simply untrue in the majority of cases. EULAs are most often simply agreed to by the users without being read. Last week I bought a fire-wire cable for my iPod at an Apple dealer in Melbourne, Next Byte. I paid for it, put it into my backpack and started to leave, but the salesman rushed to stop me and asked that I sign long cash register docket that included "I hereby accept the terms and conditions..." There were five terms and conditions on the front of the docket and 14 on the back, including one that uses "effect" when the clear intention is "affect". There was no pretence that I should read the terms and conditions prior to signing my assent. A contract for purchasing a fire-wire cable? Bloody hell, we've gone mad! I signed it (without reading it) because I wanted the docket as a curio, but I dare say it will simply be the first of many that I am expected to sign. The docket says repeatedly that "Full terms and conditions can be found on www.nextbyte.com.au." Does that imply that there are more? I couldn't find any on that website... In Australia purchasers have a number of statutory rights that can not be waived. Many contracts of sale attempt, knowingly or not, to bypass, diminish or distract from those rights. Item 7.4 of the terms and conditions is that "The customer has not relied upon any representation made by Next Byte or upon the skill and judgement of Next Byte...", so even if you did, you didn't (even if you think you did because you didn't read the document that says you didn't. It sounds like something that Donald Rumsfeld might enjoy. In my opinion a document or EULA that is proffered for a signature with no expectation that both parties know and understand the contents should be as legally enforceable as toilet paper. Maybe I'm a dummy. Regards, -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list use-revolution@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Ensuring numeric input
Thank you all for your input into my problem. I have now settled on a solution using a combination of a keydown filter and a handler triggered on closeField. In the field scripts: on keydown thekey if theKey is in "01234567890-.," then --note comma added for MisterX pass keyDown end if end keydown on closeField checkFieldForValidNumbers(the id of me) end closeField And in the stack script: on checkFieldForValidNumbers pfieldID put fld ID pFieldID into tdata put 0 into lineNum repeat for each line tline in tdata add 1 to lineNum if tline is not a number then beep Answer "Please ensure that all values are valid numbers." select line lineNum of field id pFieldID exit to top end if end repeat end checkFieldForValidNumbers I am assuming that the number() function will be OK with commas as decimal places in coutries where that is the norm, but I'm not really sure. Xavier, can you check that the scripts work OK for you please? -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list use-revolution@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Ensuring numeric input
Sorry Ken. Your script works well in a one-line field, but I need it to work in a many line field (maybe I didn't say that in the first place). At 12:27 AM -0500 27/10/05, [EMAIL PROTECTED] wrote: Try this one (script of the field): on keydown whichKey if whichKey is among the chars of "01234567890.-" then put me into tTemp put word 2 of the selectedChunk into sChar put word 4 of the selectedChunk into eChar if eChar > sChar then -- some text is selected delete char sChar to eChar of tTemp end if put whichKey after char eChar of tTemp if isNumber(tTemp) then pass keyDown end if end keyDown Basically it checks to see if the end product would end up with a numeric value, and if so, it will allow the keystroke to happen. BTW: There was no reason to trap for backspace/delete as there isn't a way AFAIK to remove some or part of a number and have the end result *not* be a number. HTH, Ken Ray At 5:44 AM -0500 27/10/05, Richard Gaskin wrote: Judy Perry wrote: > Of course, they just told me today that they think that it is possible for > a computerized voting scheme to have an error rate of <1%. It's not the errors I'm concerned about as much as vulnerabilities and no audit trail. Bartcop's Second Law of Economics: "If someone makes a mistake that puts money in their pocket, you can bet they'll make that mistake again, and again, and again..." This will get me into trouble if anyone notices it here at the bottom: It is very important to recognize the folly of corruptible voting machines and to accept the possibility that elections are rigged. However, it is MUCH more important that people think about why they voted the way they did. They shouldn't be misled in the same way a second (third?) time. A little reflection and self-knowledge is called for: half of us owe the other half a confession of mea culpa. -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list use-revolution@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Ensuring numeric input
Thanks for the suggestions, but unfortunately it doesn't seem to be anywhere near that easy. A user can put the insertion point within a number and so I need to check before the character is entered whether the value will be a number after the new character is added at the insertion point. The new character may be at the start of a numeric string, in the middle or at the end. I can't find an easy function that gives the insertion point relative to the selectedLine. Most of the complexity of my script is in deciding where the insertion will be made in the line of interest. Still lacking a simple solution... At 8:56 PM -0500 26/10/05, [EMAIL PROTECTED] wrote: the isNumber of value isNumber(value) isNumber(8) -- returns true isNumber(1+5) -- returns true isNumber(foo) -- returns false Dennis Thanks, but the 'isnumber' function is the same as the 'is a number' that I used in my script. At 8:56 PM -0500 26/10/05, [EMAIL PROTECTED] wrote: You can also add zero to it; if it is a number then the result will be empty. Paul Looney Thanks, but that is not functionally different from simply using 'is a number'. Or is it? At 10:34 AM +1000 27/10/05, Michael J. Lew wrote: How can I prevent users from being able to make non-number values in a field? Simply preventing non-numeric keys is not enough because I need to prevent things that use characters that are in valid numbers to make non-numbers like 1.2.3 or -1.2-3. I thought it would be relatively easy, but it might not be. Here is the field script of a surprisingly complicated attempt: on keydown thekey if theKey is in "0123456789-." then --may be an allowable input -- but I still need to check whether the result would be a valid number. put value(the selectedLine) into thisLine --current number put length(thisLine) into thisLineLen put the selectedCHunk into sc --returns character locations from start of field --Need to find where the current line starts put offset(thisLine,me,min(0,word 2 of sc-thislinelen)) into thisLineStart --The characters to skip bit is an attempt to prevent the offset function -- from returning a match to an earlier line in the field. -- It needs the min function to prevent negative values. --Now see if the input would make a non-numeric result --First find where the selection point is in the line put word 2 of sc +1 - thisLineStart into theSelectionStartChar put word 4 of sc +1 - thisLineStart into theSelectionEndChar --I don't know why I had to add one to the values... put thisLineStart & return & theSelectionStartChar && theSelectionEndCHar --Now test the input in the relevant place put theKey into char theSelectionStartChar to theSelectionEndChar of thisLine --next line to help debugging --put thisLine & return & thisLineStart & return & theSelectionStartChar && theSelectionEndChar if thisLine & "0" is a number then --should be OK --Needs the appended zero to allow a line to start with a decimal point. pass KeyDown end if end if end keydown It seems to work, but it's an extraordinarily long and winding road to get to a simple end-point. What am I missing? Thanks, Michael -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list use-revolution@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution
Ensuring numeric input
How can I prevent users from being able to make non-number values in a field? Simply preventing non-numeric keys is not enough because I need to prevent things that use characters that are in valid numbers to make non-numbers like 1.2.3 or -1.2-3. I thought it would be relatively easy, but it might not be. Here is the field script of a surprisingly complicated attempt: on keydown thekey if theKey is in "0123456789-." then --may be an allowable input -- but I still need to check whether the result would be a valid number. put value(the selectedLine) into thisLine --current number put length(thisLine) into thisLineLen put the selectedCHunk into sc --returns character locations from start of field --Need to find where the current line starts put offset(thisLine,me,min(0,word 2 of sc-thislinelen)) into thisLineStart --The characters to skip bit is an attempt to prevent the offset function -- from returning a match to an earlier line in the field. -- It needs the min function to prevent negative values. --Now see if the input would make a non-numeric result --First find where the selection point is in the line put word 2 of sc +1 - thisLineStart into theSelectionStartChar put word 4 of sc +1 - thisLineStart into theSelectionEndChar --I don't know why I had to add one to the values... put thisLineStart & return & theSelectionStartChar && theSelectionEndCHar --Now test the input in the relevant place put theKey into char theSelectionStartChar to theSelectionEndChar of thisLine --next line to help debugging --put thisLine & return & thisLineStart & return & theSelectionStartChar && theSelectionEndChar if thisLine & "0" is a number then --should be OK --Needs the appended zero to allow a line to start with a decimal point. pass KeyDown end if end if end keydown It seems to work, but it's an extraordinarily long and winding road to get to a simple end-point. What am I missing? Thanks, Michael -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 put "-1" is a number Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list use-revolution@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution
Re: animate light to dark
Thanks Scott, your script works very nicely with small images. Unfortunately, when I make the image as large as I want (about half of the screen) it still shows flickery lines as it animates. However, I've tried it on the Macs and PCs that the students will be using and they are perfectly acceptable. It looks like my Mac has fallen a bit too far behind the times! In a way, that makes things easy for me: if my stacks work well enough here, they will certainly work well enough in the student labs. At 2:43 AM -0500 14/9/05, [EMAIL PROTECTED] wrote: Recently, Michael J. Lew wrote: I am trying to get a smooth animation of a background going from light to dark (and vice versa), but I'm having trouble making it fast enough, smooth enough and flicker-free. ... What I need is to have a large dark region behind some images get light over about half a second so that the transition doesn't look too amateurish. I also need to be able to respond to messages while the change in darkness is occurring. This last line is a significant hurdle. Being able to respond to messages means you can't use any of the built-in transitions. So you are correct to attempt to build the transition yourself. I've tried playing with fill colors of buttons and fields and with blendlevels of an image. I also tried the straightforward approach of simply stacking a sequence of buttons with different fill colors and hiding or showing them in sequence. For every approach I've tried the transitions are good enough with small areas, but when the objects are made large enough for my purposes they are slow and yukky. Doing visual changes over large areas does indeed require more overhead/resources, as will accounting for a lot of controls. As far as what you describe above goes, here are some more efficient options: 1) use a large image set to solid black (or whatever color is appropriate), and set its blendLevel repeatedly from 100 to 0 and then back to 100 again. Something like: on mouseUp initFader fadeCard end mouseUp on initFader put "" into fCount set blendLevel of img myFader to 100 end initFader local fCount on fadeCard if fCount = "" then put 1 into fCount set the blendLevel of img myFader to abs(100 - (fCount * 5)) # ADD YOUR ROUTINES HERE if fCount < 40 then add 1 to fCount else initFader # MAKE CERTAIN MYFADER IS NOT VISIBLE exit fadeCard end if send "fadeCard" to me in 10 millisecs end fadeCard 2) use a button (with all visible properties disabled) as an image display and set its icon repeatedly to a sequence of images as above (solid color images will be the most efficient) 3) depending on what's happening on your card, you might be able to repeatedly set the backColor of the card from light to dark and light (as above) but obviously this will not obscure any controls on the card 4) you might consider giving up the fade transition all together and instead simply lock the screen while popping up a separate "activity" window that displays an animation to draw users' attention away from the updating window Hope this helps. Regards, Scott Rossi Creative Director Tactile Media, Multimedia & Design -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list use-revolution@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution
animate light to dark
Dear all, I am trying to get a smooth animation of a background going from light to dark (and vice versa), but I'm having trouble making it fast enough, smooth enough and flicker-free. I think it is something to do with screen redraws in OS X (see Jim Hurley's BZ entry 2639), but maybe it's more general. What I need is to have a large dark region behind some images get light over about half a second so that the transition doesn't look too amateurish. I also need to be able to respond to messages while the change in darkness is occurring. I've tried playing with fill colors of buttons and fields and with blendlevels of an image. I also tried the straightforward approach of simply stacking a sequence of buttons with different fill colors and hiding or showing them in sequence. For every approach I've tried the transitions are good enough with small areas, but when the objects are made large enough for my purposes they are slow and yukky. I've tried fiddling with unlock screen commands and with wait commands, and while they are necessary for intermediate stages to be visible, they don't fix the problems. Does anyone have a suggestion that might help? I've experimented with timing screen redraws and found that when only a small area is changed they occur almost instantly, but when a large area is changed they take much longer (I don't want to say how long because it will make me want a new Mac ;-) Does it seem strange that the time needed for a screen redraw scales with the area of the control that has changed its appearance? I would have thought a redraw would be a redraw of the whole screen and so it wouldn't make any difference whether the alteration was of a small area or large. Thanks for any help. Michael -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list use-revolution@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Repeat until (0r "while") not working
Tried this in the message box: put the number of lines in ("This is a test" & CR) =>1 The transcript does what it should. The confusion is that the CR is part of the line that it ends, not the second line whose existence it seems to imply. At 11:03 PM -0500 10/8/05, Ken Ray wrote: Here's the stuff I found when I put (CR & CR & "This is a test" & CR & CR) into a field and then ran the original code: put fld "transcript" into tFinalTranscript # clean up extra lines at beginning and end repeat while ((line 1 of tFinalTranscript) is empty) delete line 1 of tFinalTranscript end repeat repeat until ((the last line of tFinalTranscript) is not empty) delete the last line of tFinalTranscript end repeat put tFinalTranscript exit to top - It removed all the CRs from the beginning of the string - I removed the only one of the CRs from the end of the string Leaving me with: "This is a test" & CR -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list use-revolution@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution
South East Rev Users Group meeting today
There will be a meeting of the South East Revolution Users Group in my office, this winter, 9/8/2005, at lunch time. Of course, Melbourne is in the South East of Australia, and it is winter right now! :-) -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list use-revolution@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution
Re: global problems
Actually, to delete a global from the message box you need: global ; delete global I guess it is the same as having to refer to the global (initialise it?) in a script before using it. At 7:36 PM -0500 1/8/05, [EMAIL PROTECTED] wrote: Now hold on a minute; I did remember a time a version back when I set a global when I should have set a local, and the global wouldn't go away, I couldn't recreate as a local, even though I used 'delete' from the msg box. It insisted on being a global. I had to quite rev to continue... sqb On 8/1/05 2:28 AM, "Mark Wieder" <[EMAIL PROTECTED]> wrote: Global variables are persistent in memory, even when they've been purged. Once you have declared a global variable, even if you have deleted the line of code that declared it, you're stuck with it. Well, yes, but that's because you didn't explicitly delete it, which you can do with: delete global Ken Ray -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list use-revolution@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution
partial workaround for cross-platform fonts
I think that Phil might be onto a good workaround for cross-platform fonts. He suggested an image of a fld instead of the fld, and that should be perfectly OK for any locked fld. It makes the stack bigger, but mostly that doesn't matter. I've made a button that puts a snapshot over each locked, visible fld and keeps a record in order to be able to remove the images as needed. It seems to work well on one platform (Mac) but I can't conveniently check that the result works on any other. I think it should. The script is below. Just put a button onto the first card of a stack and put the script into it. A click should overlay the appropriate flds with images, and an option-click should remove the images. Two questions: 1. Does it work for others? 2. Can we optimise the script to make it into a generally useful workaround? At 10:38 PM -0500 26/7/05, Phil Davis wrote: > There's a font with identical metrics on multiple platforms? Yep - it's called a snapshot of the screen (or at least of the field). :o) That's what I was referring to as having the same metrics on all platforms. I guess I didn't finish connecting the dots in the explanation of my proposed solution. Phil on mouseUp if the optionkey is not down then --make images repeat with i=1 to the number of cards go to card i put empty repeat with f=1 to the number of flds set the cursor to busy if the locktext of fld f and the visible of fld f then put "Making image of fld " & the short name of fld f & return after msg put the rect of fld f into trect --adjust the rect to make it relative to the stack.\ (I don't know why this is needed, but it is). add the left of this stack to item 1 of trect add the left of this stack to item 3 of trect add the top of this stack to item 2 of trect add the top of this stack to item 4 of trect --make the image and place it over the fld import snapshot from rectangle trect set the loc of last image to the loc of fld f set the layer of last image to (the layer of fld f)+1 --keep a record set the cFldImagesList of me to \ the cFldImagesList of me & the id of last image & return end if end repeat end repeat else --delete the images to get back to the flds put the cFldImagesList of me into myList repeat for each line tid in myList set the cursor to busy if there is an image id tid then --it might have been manually deleted put "Deleting image id " & tid delete image id tid end if end repeat put "Done" set the cFldImagesList of me to empty end if end mouseUp Regards, Michael -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list use-revolution@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Praise: Rev Documentation to the rescue
re using the down to form), the loop performs its final iteration and then ends. If you specify an increment, the increment is added to the counter each time through the loop, rather than the counter being increased by 1. (The increment is not treated as an absolute value: if you're using the down to form, the increment must be negative.) As with the for number times form described above, the startValue and endValue are evaluated when the loop is first entered, and are not re-evaluated as a result of any actions performed in the statementList. Use one of these forms if you want to perform an action on each member of a set, and you need to refer to the member by number within the statementList. The following example loops through all the controls on the current card. The counter x is 1 during the first iteration, 2 during the second, and so on: repeat with x = 1 to the number of controls show control x end repeat The following example loops backwards through a set of lines. The counter myLine is 20 during the first iteration, 18 during the second, and so on: repeat with myLine = 20 down to 1 step -2 put myLine end repeat Note: It is possible to change the counter variable in a statement in the loop. However, doing this is not recommended, because it makes the loop logic difficult to follow: repeat with x = 1 to 20 -- this loop actually repeats ten times answer x add 1 to x -- not recommended end repeat The for each form: The for each chunkType labelVariable in container form sets the labelVariable to the first chunk of the specified chunkType in the container at the beginning of the loop, then sets it to the next chunk for each iteration. For example, if the chunkType is word, the labelVariable is set to the next word in the container for each iteration of the loop. Use the for each form if you want to perform an action on each chunk in a container. This form is much faster than the with countVariable = startValue to endValue form when looping through the chunks of a container. The following example changes a return-delimited list to a comma-delimited list: repeat for each line thisLine in myList put thisLine & comma after newList end repeat if last char of newList is comma then delete last char of newList The for each element labelVariable in array form sets the labelVariable to the first element in the array at the beginning of the loop, then sets it to the next element for each iteration. Important! You cannot change the labelVariable in a statement inside the loop. Doing so will cause a script error. You can change the content of the container, but doing so will probably produce unexpected results. Use the for each form if you want to perform an action on each element in an array. The following example gets only the multi-word entries in an array of phrases: repeat for each element thisIndexTerm in listOfTerms if the number of words in thisIndexTerm > 1 then put thisIndexTerm & return after multiWordTerms end repeat Note: The repeat control structure is implemented internally as a command and appears in the commandNames. Changes to Transcript: The ability to specify an increment for the repeat with counter = startValue to endValue form was added in version 2.0. In previous versions, this form of the repeat control structure always incremented or decremented the counter by 1 each time through the loop. -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list use-revolution@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Praise: Rev Documentation to the rescue
Oh dear, oh dear oh dear! What is it with people and the docs? The docs work perfectly well when you know where to look for information. That may not always be immediately obvious, but I think that some don't spend enough time looking at the arrangement of the information before they claim the docs are too hard, or a bottleneck. In Rev it is very easy to experiment with commands to see how they work. Try it. In Rev it is fairly easy to guess what a command might be. Just try it out and see if it works. If it doesn't then type it into the dictionary filter and see what comes up. This list is part of the effective documentation of Revolution (look up "effective" keyword in the dictionary ;-). Ask a question here and you will generally get a useful answer. Don't try to tell me that Rev is not good for non-professionals. This list is full of non-professionals who are making good things with it. Regards, Michael Lew At 2:29 PM -0500 25/7/05, [EMAIL PROTECTED] wrote: But Rev is advertised as "enterprise-ware" if I'm not mistaken. In theory, Rev is great for pros, great for novices, and great for do-it-yourself end-users, who possess a modicum of intelligence, motivation and computer experience. Maybe it's fine for Pros, but it's too damned hard for everyone else. The documentation presently available is the biggest bottleneck, in my opinion. It still seems to me that it just wouldn't be that hard or expensive to make it a whole lot better. -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list use-revolution@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Slider values
Well done Brian. Yes, setting the (invisible) lineIncrement property to zero fixes the numbers. I didn't notice that the little ticks were wrong. I don't know how to fix them. Your initial comments regarding a new user are exactly my sentiments. There are a couple of bugs in scrollbar objects in addition to such unexpected behaviour. I would like to see them cleaned up substantially at some stage. They are awkward to use in any quantitative way because their lineInc, pageInc and numberFormat properties are all interlinked. What do these number series have in common, and what is the underlying pattern? a: 1,2,3,4,5,6,7,8,8,9,10; b: 1,10,20,29,38,48,57,67,76. The answer is they are the series of values that you get when you click on the bar of (a) a fresh, unadjusted slider control, and (b) a slider with its "On bar click" value (pageInc property) set to 10. Here is a challenge: Make a slider control that starts at 0 and increments by exactly 10 when you click on the bar, up to 100. It is certainly possible, but not easy if you don't know the trick. Regards, -- > Michael J. Lew > Setting the lineIncrement property to 0 seems to solve it... except: a) I had to discover lineIncrement and set it by script b) The ticks marks are wrong So, what IS the trick? -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list use-revolution@lists.runrev.com http://lists.runrev.com/mailman/listinfo/use-revolution
Slider values
What do these number series have in common, and what is the underlying pattern? a: 1,2,3,4,5,6,7,8,8,9,10; b: 1,10,20,29,38,48,57,67,76. The answer is they are the series of values that you get when you click on the bar of (a) a fresh, unadjusted slider control, and (b) a slider with its "On bar click" value (pageInc property) set to 10. Here is a challenge: Make a slider control that starts at 0 and increments by exactly 10 when you click on the bar, up to 100. It is certainly possible, but not easy if you don't know the trick. Regards, -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list use-revolution@lists.runrev.com http://lists.runrev.com/mailman/listinfo/use-revolution
Rev 2.6 docs slow?
I've downloaded 2.6 and LOVE seeing array content in the debugger. However, the docs have become impossibly slow (a minute or so to show the topics). Anyone else see that? Regards, -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list use-revolution@lists.runrev.com http://lists.runrev.com/mailman/listinfo/use-revolution
Re: coding challenge idea
My son enjoyed looking for words in word-search puzzles, and they seemed like a good learning tool that could be made better with some extra levels of interaction. A word search-based language and spelling tool might make a good coding challenge and group project. I started to make one a few years ago and there seemed to be plenty of scope for using Revolution's strengths. The end result might be a good gift for primary schools. Word search puzzles are arrays of apparently jumbled letters that contain a specified list of words (see <http://www.thepotters.com/puzzles/squaredancing.gif> for an example). I would propose that the completed application would have at least the following features: 1. The ability to rearrange word squares automatically so that users can search for the same list of words repeatedly. 2. The opportunity for the user to manually arrange some or all of the words to make their own word search square for others to solve. 3. Prepared lists of words (thematically arranged?) and the option for the user to make their own lists. 4. Sound files to speak the words in the search list so that users can learn unfamiliar words. 5. An option for the user to record sound files of their own words so that their own word lists can be spoken by the program. 6. A timing function so that the challenge can be increased, or the game can be made competitive (for the boys...). This list of features would make for several independent coding challenges, and thus, of course, for many opportunities for participants and lurkers to learn coding approaches. What do you think? Regards, -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list use-revolution@lists.runrev.com http://lists.runrev.com/mailman/listinfo/use-revolution
Too little space leads to too many spaces
Yesterday I encountered an oddity when I started to work on a Rev project: I started to get repeating space characters in the script editor. When I closed the script the problem seemed to go away, at least until I focused on a field when the spaces reappeared. My keyboard looked fine, and so I switched to another app and there seemed to be no problem... until I clicked in a editable place. I guessed that Rev had gone mad and so I quit it. That didn't fix the problem so I restarted the computer, which did. Today I started the same Rev project and immediately found the same repeating space characters appearing in a field, and in my other apps. Oh no, a Rev bug bites? No!. It turns out that when I started to work with Rev each time I got out my project workbook and put it in front of the keyboard. The book didn't press the space key on that keyboard, but I have a second keyboard behind my monitor simply to act as a USB extender and when I put the workbook in front of my primary keyboard, I was pushing the keyboard back a bit which pushed the monitor back a bit which pushed some CD covers onto the space key of my USB extender keyboard! -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list use-revolution@lists.runrev.com http://lists.runrev.com/mailman/listinfo/use-revolution
RE: [ANN]Tao of RunRev, RunRev Wishlist, and RunRevDocumentationProjects
I think your head can be protected from hurt if you consider the proof by Gödel that no logical system can be both complete and internally consistent. Thus we shouldn't expect our mental logical system to be able to deal with everything without throwing up the odd paradox. If you like thinking about such things, I recommend that you look at the book Gödel, Escher, Bach: the eternal golden braid by Douglas Hofstadter. At 2:52 PM -0500 23/3/05, [EMAIL PROTECTED] wrote: My favorite head-hurting concept regarding origin of the universe theories... If this 4-D space (more like 11-D if you want to get technical about it) in which we find ourselves has a starting point (like the big bang), then what caused that to happen? Unless you believe in A-Causality, something had to start it. Now, time, as understood in modern physics, is a component of the fabric of space-time that defines this 4-D space. However, if something caused this 4-D space to come into existence - well, that was an action. For any action to actually happen, there must be some sort of time. This implies some sort of time that exists outside of the fabric of space-time that defines our 4-D space. This implies more than one dimension of time! Multiple dimensions of time would allow for (but not require) all sorts of time-travel and cross-time communication scenarios. We could have apparent breaks in causality (to those inside the inner dimension of time) such as the grandfather paradox, but would not have true breaks in causality. Fun stuff. -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list use-revolution@lists.runrev.com http://lists.runrev.com/mailman/listinfo/use-revolution
erratic screen updates (was Slow screen lock/unlock)
OK, thanks to all who helped me. The suggestions of Malte Brill, Jim Hurley and Richard Gaskin were particularly useful. I've now done some more fiddling around, and it seems that Jim is right: my problem is the same as that he was battling previously. Malte's suggestion to use messages and a flag rather than an if in a repeat did indeed speed up my display. Richard's suggestion of a wait with messages also sped up the original script. My conclusions are: 1. There are few, and erratic screen updates in a repeat loop. This script results in the display of only two numbers on my system: on mouseUp put 0 repeat 100 add 1 to msg end repeat end mouseUp 2. A redraw can indeed be forced with a wait. If I add "wait 0" or "unlock screen" within the loop then all of the expected numbers flash past rapidly. I didn't see any difference between wait with messages and a simple wait. 3. Lock screen does unexpected things. If the loop in the script is "add 1 to msg; unlock screen" then it works well, but if it is "lock screen; add 1 to msg; unlock screen" then only about every 7th number appears. 4. Completion of a handler only forces a redraw if there is a wait command. Thus the following handler gives only a couple of numbers: on mouseUp put 0 addOne end mouseUp on addOne add 1 to msg if msg<100 then send addOne to me end addOne If a wait is added by making the line into "if msg<100 then send addOne to me in 0 millisecond" then all numbers are displayed. Here is an improved version of my point animating test script (you'll need a button for the script, two graphics and one field): local timelist on mouseUp set the flag of me to not the flag of me if the flag of me then put empty into timeList set the l of me to the left of grc 1 set the w of me to the width of grc 1 set the t of me to the top of grc 1 set the h of me to the height of grc 1 if the flag of me then animatePoints if not the flag of me then put reportTimes() into fld 1 set the clipboardData["text"] to fld 1 end mouseUp on animatePoints --make randomly placed points put empty into myPoints repeat 100 put the l of me + random(the w of me) into x put the t of me + random(the h of me) into y put x,y & return after mypoints end repeat --display them set the points of grc 2 to myPoints if the flag of me then send animatePoints to me in 20 millisecond put the milliseconds & return after timeList end animatePoints function reportTimes put 0 into prevTime put line 1 of timeList into st repeat for each line ttime in timeList put ttime-st & tab & ttime-prevTime & return after durationList put ttime into prevTime end repeat delete line 1 of durationList return durationList end reportTimes If you run it you may find, as I do, that it is plenty fast enough in bursts, but the rate is erratic, with some cycles as much as 6 times slower than the average. Overall it works in a disappointing way. This has been interesting, but at the end I still have to say that I haven't found a way to get smooth animation rates. The calculations are fast enough and the screen updates are fast enough most of the time, but every second or so there are a few slow cycles and that makes any animation jerky and horrible. -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list use-revolution@lists.runrev.com http://lists.runrev.com/mailman/listinfo/use-revolution
RE: Slow screen lock/unlock
At 5:41 PM -0500 16/3/05, Jonathan Lynch wrote: How long does it take if you comment out the lock screen line? Well, I thought I had answered that before you asked it, but a typo got in the way! When I comment out the lock screen line it takes less than one millisecond. Unfortunately, simply omitting the lock and unlock screen commands doesn't get rid of my problem. The reason I ran the test of lock/unlock speed is that the following test script animates the points at an unacceptably slow (and somewhat erratic) rate: on mouseUp --initialise some convenience variables put the left of grc 1 into l put the width of grc 1 into w put the top of grc 1 into t put the height of grc 1 into h repeat --make randomly placed points put empty into myPoints repeat 100 put l + random(w) into x put t + random(h) into y put x&","&y & return after mypoints end repeat --display them lock screen set the points of grc 2 to myPoints unlock screen if the mouse is down then exit repeat end repeat end mouseUp Graphic 2 is set to be a polygon with its markers shown (2 by 2 squares) and its line thickness set to zero. No combination of lock and unlock or no locks makes it any better. The making of the points and the setting of the points take almost no time. The slowness is in getting it onto the screen. ...and before someone asks, no, the slowness is not related to polling the mouse: commenting out that line doesn't change the update rates. At 10:08 AM +1100 17/3/05, Michael J. Lew wrote: Subject: Slow screen lock/unlock It takes about 260 milliseconds to lock and unlock the screen (OS X 10.3, slowish G4). Here is my test script that takes 2680 milliseconds to run: on mouseUp put the milliseconds into startTime repeat 10 lock screen unlock screen end repeat put the milliseconds-startTime end mouseUp If I comment out either the lock screen or the unlock screen then the whole thing takes 2 milliseconds and if I comment out the unlock screen line then it takes less than one millisecond. Is it slow on other systems? Is this some Quartz "feature"? Is there something wrong with the way that Rev does screen locking or unlocking? How can I get around slow screen updates for animating lots of points? -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list use-revolution@lists.runrev.com http://lists.runrev.com/mailman/listinfo/use-revolution
Slow screen lock/unlock
It takes about 260 milliseconds to lock and unlock the screen (OS X 10.3, slowish G4). Here is my test script that takes 2680 milliseconds to run: on mouseUp put the milliseconds into startTime repeat 10 lock screen unlock screen end repeat put the milliseconds-startTime end mouseUp If I comment out either the lock screen or the unlock screen then the whole thing takes 2 milliseconds and if I comment out the unlock screen line then it takes less than one millisecond. Is it slow on other systems? Is this some Quartz "feature"? Is there something wrong with the way that Rev does screen locking or unlocking? How can I get around slow screen updates for animating lots of points? Regards, -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list use-revolution@lists.runrev.com http://lists.runrev.com/mailman/listinfo/use-revolution
RE: clone this card
No, the stack is not locked, encrypted or anything. In a brand new mainstack I can clone buttons, fields and the stack itself, but not cards. Very strange. Maybe I should reinstall Rev At 8:16 PM -0500 3/2/05, Frank Engel wrote: Is the stack encrypted (is a password set)? If so, you can't clone cards in that stack. On Feb 3, 2005, at 7:07 PM, Michael J. Lew wrote: Strangely, I am unable to clone cards. This script in the message box or in a mouseUp handler in a button doesn't add to the number of cards and the it variable is stuck on the current card: clone this card; put it & return & the number of cards in this stack > It should make me a new card, shouldn't it? -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list use-revolution@lists.runrev.com http://lists.runrev.com/mailman/listinfo/use-revolution
clone this card
Strangely, I am unable to clone cards. This script in the message box or in a mouseUp handler in a button doesn't add to the number of cards and the it variable is stuck on the current card: clone this card; put it & return & the number of cards in this stack It should make me a new card, shouldn't it? -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list use-revolution@lists.runrev.com http://lists.runrev.com/mailman/listinfo/use-revolution
Re: New Externals...
I would make use of an empty external that took a list of parameters and returned a list of parameters without altering them! What I really want is to be able to use the enormous resource of proven algorithms that are available for doing mathematical stuff quickly. I imagine that I would take the source of the empty external and put the algorithm into its guts and then compile it for use. That would allow me to make lots of useful things at little effort. Maybe my lack of understanding of externals is showing :-) -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list use-revolution@lists.runrev.com http://lists.runrev.com/mailman/listinfo/use-revolution
command-option-click edit
When we command-option-click on a control we can conveniently edit its script. However, if we are in browse mode then we also activate any mouseUp handler in the control. I think that is bad behaviour because I'm always intending to edit the script, not activate the control. I am a slow learner and make the mistake many times a day. I'm very tired of it. You might be too. Are there any circumstances when you would WANT to activate the control with the click that opens the script editor in the IDE? There is certainly circumstances where it is annoying: if a button has a long-lasting script, or if the button initiates a series of message calls to part of its own script. There are at least two bugzilla reports about this behaviour, but they are resolved as not a bug (1884) and as a duplicate (1966). I would be very pleased if Alex Tweedy would re-open BZ bug #1884, and if all of you would vote for it. Regards, -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list use-revolution@lists.runrev.com http://lists.runrev.com/mailman/listinfo/use-revolution
Re: et scrollbar values to decimals -- 1/100's ths
Sivakatirswami wrote: I set a scroll bar number format to "#.00" but I am unable to set the beginning and ending values to a decimal value.. Are we only allowed positive whole integers ? (That's what I seem to be limited to...) You can set the start and endvalues to non integers by script and from the messagebox. In my opinion the values and behaviour of scrollbars are poorly thought-out and the scrollbar object properties inspector is confusing and limited. I'm alone in these opinions, however... Regards, -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list use-revolution@lists.runrev.com http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Two questions: Drawing Normal Curve and setting start & end
At 12:00 PM -0500 24/11/04, Ruben wrote: I think this is getting close to what I want to do, but where do I find this DistHistoBox graphic? Is it built in? ...what am I missing here? It's just a graphic. Choose the Rectangle tool (you may need to click the Show Paint & Draw Tools disclosure triangle on the tool palette to see it) and draw a box. Make its name "DistHistoBox" to match its name in my script. You will also nee to make a graphic (a line, anywhere initially) called "DistHistoLine". To make my script work you need to make one button called "Plot Histo" and put the MouseUp handler and StandardNormalPDF function into it (the function could alternatively be at a higher level in the message path, say in the card or stack script). You need a graphic (rectangular for convenience) called "DistHistoBox" for the plot to be put into, and a graphic (any type, but I used a line) called "DistHistoLine" to become the curve. Make sure the histo box is behind the histo line, or that it is not opaque. Put a text box at either end of the histo box to hold the scale extreme values and call them "DistMin" and "DistMax" as appropriate. You then need two scrollbars called "mean" and "stdev". Make sure the stdev scrollbar is not set to zero! You have to name the objects correctly only because I referred to those names in the scripts. I could send you a stack if you need it, but it would probably be better if you reconstructed it yourself... When you say insert a graph, would that be a pre-drawn graph of a curve I put in? Sorry if these questions sound too basic. I'm not sure about this question, although I would say that nothing is too basic if you need to ask it. Are you referring to a comment in someone else's response? Perhaps you could include in your posts some judiciously chosen quoted snippets from the previous posts. Regards -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Two questions: Drawing Normal Curve and setting start & end values on a slider
This should get you going: You need a graphic called "DistHistoBox", a text field at either end of its base, "distMin" and "distMax" to hold the scale values and two scrollbars, "mean" and "stdev". Put the following script into a button and that should do it. on mouseUp put the thumbposition of scrollbar "mean" into tmean put the thumbposition of scrollbar "stdev" into tstdev put standardNormalPDF() into myPoints set the points of graphic "DistHistoLine" to myPoints set the rect of graphic "DistHistoLine" to the rect of graphic "DistHistoBox" put tmean-3*tstdev into fld "DistMin" put tmean +3*tstdev into fld "DistMax" end mouseUp function StandardNormalPDF put 1/(1*sqrt(2*pi)) into bit1 --1/(sigma*sqrt(2*pi)) if it wasn't the *standard* normal PDF repeat with xhundred=-300 to 300 --600 points, more than enough put xhundred/100 into x put exp((-1/2)*((x)/1)^2) into bit2 --exp((-1/2)*((x-mu)/sigma)^2) if it wasn't the *standard* normal PDF put xhundred &"," & round(-600*bit1*bit2) & return after PDFpoints --multiplied by -600 to avoid loss of data due to --the rounding (needed to make valid points) --and to turn the curve up the right way end repeat return PDFpoints end StandardNormalPDF The whole thing runs fast enough that you could make it refresh as the scrollbar values are changed: on scrollbarDrag send mouseUp to btn "Plot Dist" end scrollbarDrag Hope that helps. At 11:10 PM -0500 22/11/04, Ruben Silenas wrote: I would like to draw a normal curve based on some normal stats provided by a user. One method I have thought of is adapting the start and end values on a slider to a value (say +/- 3 sigma) and then the thumbstick to the mean...that would give me the values on a pre-drawn curve... But can I actively dra a new curve every time normal stats are entered (mean and std dev)? Thanks in advance. Ruben -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: popup menus stop working...
Chipp asked about a workaround for popups eventually failing (IDE menus get truncated at the same time for me). As far as I know there isn't a workaround apart from restarting Rev, but Tuviah claims to have fixed the problem (see bugzilla #2114 and #2126). In my opinion the issue is a big enough problem that we should have had a new release of 2.5 (numbered 2.5.1 ;-) as soon as he got it fixed. I have to restart Rev about 6 times a day when I am working with it :-( Michael -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Accessing parts of arrays
Maybe you could use the intersect command to split out subarrays. Otherwise, remember that you can easily combing an array by comma and then use the average(item 1 to 4 of x) approach. At 6:23 PM -0400 29/9/04, Greg wrote: To: Revolution <[EMAIL PROTECTED]> Message-ID: <[EMAIL PROTECTED]> Content-Type: text/plain; charset=US-ASCII; format=flowed Hello everyone, In doing some statistical work, it occurred to me that Revolution's arrays would be greatly enhanced if we could access sub-arrays just like we can with itemized and line-delimited lists. For example, in a comma-delimited list of the natural numbers, 1 to 10, we can compute the average of any subset of the numbers using the average() function: put "1,2,3,4,5,6,7,8,9,10" into x put average(item 1 to 4 of x) && \ average(x) && \ average(item 1 to 8 of x) --yields 2.5, 5.5 and 4.5. But as far as I know, we cannot refer to element 1 to 4 of array x, and we can only take the average of all the values in x to get 5.5 as below. multiply t by 0 repeat 10 times add 1 to t put t into x[t] end repeat put average(x) -- yields 5.5 Greg -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: standalone problems
There is a bug that affects the filename and effective filenames in standalones that might cause your problem. See bug #2233. If you have non-standard characters in the file path (my student labs have folders with option-f () at the end of their names) then the path in the filename is screwed up and you can't open files. At 2:30 AM -0400 23/9/04, [EMAIL PROTECTED] wrote: my very first app run fine in rev, but the standalone version don't run at all (also a basic action as open a file fail...). probably I'm making some horrible mistake, but I can't figure which one! can someone take a look to this app? Rev Online, Users space, OTTO; the filename is XMLang. I'm using Rev 2.5 on MacOSX. thanks in advance, carlo ricchiardi -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: rev stats
At 10:59 AM -0400 22/9/04, Bob Hartley wrote: I have some stacks that will do several different statistical tests (I'm working on a stats learning program for biomedical scientists). What tests are you after? Hi all I know there is a hypercard statistics stack. Is there one for rev? All the best Bob -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Copy a group to another stack
I probably should know this by now, but how can I copy a group of controls from one stack to another? I can't find anything useful in the docs. The "Place group" stuff doesn't mention a case where the group is part of a different stack :-( Thanks. -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Copy a group to another stack
OK, I've found it: Copy and Paste! I did try that and it didn't work. Honest! My problem and confusion appears to have been the failure of the command-C and command-V keystrokes to do the job. I guess I'll download the newer build now... -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
RE: Scrollbars and LittleArrows
At 7:00 PM -0400 5/9/04, Arthur Urban wrote: My latest oddity is that my littlearrows never reaches its endValue. If I have a control with a startValue of 1 and an endValue of 10, the thumbPosition always stops at 9. I was wondering if this was due to the thumbSize being 1? But then shouldn't my thumbPositional also stop at 2? It is a little-known oddity of Rev scrollbars that the real page increment is the pageIncrement property value minus the lineIncrement property value and the real end value is the endValue property minus the thumbsize property. Another thing to keep in mind is that the numberFormat property of a slider (sets the number of decimal points shown when show value is set to true) affects the lineIncrement property value (!) and hence also the page increment (!!). I have Bugzillarated these issues without any relief: the lineIncrement affect on pageIncrement is considered to be a useful FEATURE and so my bug has been resolved as not a bug. I think there is a design flaw here that has cascaded through the various forms of the scrollbar object. You can learn to deal with the oddities by playing with a scrollbar with a script like this: on mouseUp put the lineInc of me && the pageInc of me && the thumbsize of me put return & the thumbposition of me && the endvalue of me after msg end mouseUp Hope that makes the mud less opaque. -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Educational uses for Rev (was Re: Plea to sell Dan's book widely)
At 4:31 PM -0400 11/8/04, [EMAIL PROTECTED] wrote: Perhaps another educational use of Rev-based products would be exploratory learning... then assessed, perhaps, by the dreaded m/c questions Judy Exactly! While assessment can drive learning, there is more to teaching and learning than tests ;-) I use simulations that I've written with Rev to first allow (university) students to conduct experiments and learn from the results, but then to design and conduct their own experiments to answer questions. The learning objectives of the two stages are different, but obviously synergistic. At the moment most of the use of the simulations is in supervised conditions, but I am planning a kit of simulations that students will use as part of self-directed projects. At the moment I toying with the idea that students will be required to make reports that can be distributed to the class as learning resources; having to teach something is a terrific incentive for learning it first! On Wed, 11 Aug 2004, Richard Gaskin wrote: Marian Petrides wrote: > Not only in teaching programming but in designing custom educational > courseware. Who wants the student to have ONLY simple multiple-guess > questions to work with? > > Life doesn't come with a series of four exclusive-or questions tattooed > across it, so why give student this unrealistic view of the real world, > when a little work in Rev will permit far more challenging interactivity? Agreed wholeheartedly. Education-related work was the largest single set of tasks folks did with HyperCard, and for all the tools that have come out since there remains an unaddressed gap which may be an ideal focus for DreamCard. But moving beyond simple questions models like multiple choice is difficult. The AICC courseware interoperability standard describes > almost a dozen question models, but most are variants of "choose one", "choose many", "closest match", etc., sometimes enlived by using drag-and-drop as the mechanism for applying the answer but not substantially different from what gets tested with a simple multiple choice in terms of truer assessment of what's been learned. The challenge is to find more open-ended question models which can still be assessed by the computer. For example, the most open-ended question is an essay, but I sure don't want to write the routine that scores essays. :) What sorts of enhanced question models do you think would be ideal for computer-based learning? -- Richard Gaskin > Fourth World Media Corporation -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
RE: sliderbug or me being stupid again...?
At 6:39 PM -0400 28/7/04, Wouter wrote: Some weird behavior or am I doing something wrong? recipe: A scrollbar, style set to scale/slider, start value 1, end value 10, show value true A button with the script: on mouseUp put the thumbpos of sb 1 into tX repeat with i = 1 to tX put 0 into item i of tC end repeat put "thumbpos:" && tX && "output:" && tC end mouseUp Try different positions of the slidebar. Look at the output with the thumb in the region just before the value shown changes. No, not YOU being stupid, the slider is stupid. I have to admit that that alleged stupidity of the slider is my opinion and it is not shared by Scott Raney (see bug #347). Set the numberformat of the slider to "0.00" and look at the results. You can get it to work how you might expect by using round(the thumbposition) in your script. But there is more to it... Sliders and scrollbars are far more difficult to work with quantitatively than you might think. The pageIncrement property doesn't determine the increment obtained when you click on the grey bit, it is really the pageInc minus the lineInc. The default lineInc for a new slider object is set to 0 (you can't see it in the object properties inspector but you can query it or set it with the message box). However, it changes if you change the numberformat ("Value format") of the slider! Thus if you have a slider with the numberformat set to show some decimal places you will see that clicking in the grey area of the slider gives you a change of value that is LESS THAN the pageInc ("On bar click") value. Of course, how much less than the expected value depends on the particular numberformat. I find this situation to be awkward every time I try to use a scrollbar or slider object. Just yesterday I posted this to the Improve-rev list: At 3:27 PM +1000 28/7/04, Michael J. Lew wrote: Did you know that the change in thumbposition that occurs when you click in the grey area of a scrollbar object is NOT the pageIncrement? It is actually the pageIncrement minus the lineincrement. That is not new with the beta, and it is not what the documents say but you can confirm that quite simply: Making a new scrollbar object, set its endValue to 100, its startValue to 0, its lineInc to 1 and its pageInc to 10. Now give it a script On mouseUp; put the thumbposition of me; end mouseUp. Now click away and see that the increment is 9, not 10. I posted this as a bug a long while ago (see BZ #347) but was told that it is not a bug because the GUI standard has it that a page should scroll to have the new first line the same as the previous last line (i.e. the page increment is a page minus one line). However, the documentation has not been corrected. I think that the argument for having page increment not equal to the pageInc is very weak. It doesn't seem sensible to have to work around the odd values every time we make a scrollbar to control something just to make the conformance with GUI standards for scrolling pages of text automatic. I am doubly-sure that the situation is bad because most often when text is being scrolled it is via a scrolling field rather than a separate scrollbar object and so it should be possible to have scrollbar objects behave well and fields behave differently. What do you think? Should the behaviour of scrollbar objects be changed so that the pageIncrement property is what it says or should the docs be adjusted to reflect the confusing reality? -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Alpha Channel?
You CAN permanently re-size an image with only a little bit of indirection. Make the image the size you want, then make a new image and type these two lines in the message box: set the rect of image 2 to the rect of image 1 set the imageData of image 2 to the imageData of image 1 Now image 2 has its "natural" size set to its current size. Go to another card in the stack and return and you will find image 1 has reverted to its inital size but image 2 has stayed just how you want it. (It works because the imageData is the pixels as displayed, not the pixels at the original image size.) Hope that helps. Graham wrote: It drives me crazy too because it's not clear how you turn off the 'revert to original' feature permanently, for example if you want to repurpose the image entirely and completely lose the original size. I mean, if I'd altered the shape of an image in a graphics package, I wouldn't expect the 'original size' to haunt me forever, would I? I don't see an original size as a 'natural' size; it's just what I started with, neither more nor less. -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: error message anomalies, anyone?
Me. OS X.3 Richard wrote: Howe many of you have found that error messages in Rev 2.2 do not appear to be related to the actual cause of script errors? -- -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Found It! - IDE Save File Dialog
OK, I can help too! If you make the lowest layer control a traversalOn true field _that_is_locked_ then you should not get the save dialog because a locked field can't be "dirty". At 8:19 PM -0400 27/4/04, [EMAIL PROTECTED] wrote: On 4/27/04 3:55 PM, David Burgun wrote: Ok, it's a bit worse than that, it seems that the "openField" message gets sent just because the field is "Focusable" not because the user clicked in it, I am guessing that it gets sent to the first "Focusable" field of a card, although I just cannot figure out why this happens in one stack and not another! Anyone know? Yes. The first control (that is, the control with the lowest layer) which also has its traversalOn property set to true will automatically be focused when a card opens. If this is a button, you won't get the message. If it is an editable field, you will. Since all controls on Windows can be focused, the trick is to make sure that the lowest-level, traversalOn control is a button. On a Mac, however, buttons cannot receive focus and the first editable field will receive focus instead. On Macs, you have to use a hack -- either make sure none of your fields are focusable, or else hide an editable field offscreen somewhere whose layer is set to 1. Then that hidden field gets the focus and your card looks untouched. For your problem though, the hack won't help because the offscreen field will receive focus and trigger messages anyway. So you may just have to go with the openField handler you wrote. -- Jacqueline Landman Gay | [EMAIL PROTECTED] HyperActive Software | http://www.hyperactivesw.com -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Comparing very long numeric strings
Probably some sort of numeric overflow condition. I don't know exactly what, but here's a possibly related observation: A long string of digits can be a number beyond at least 1000 places but you can't necessarily use them. Try these little tests: put (10^308) is a number--true put (10^309) is a number --false put 1*(10^308) is a number --true put 2*(10^308) is a number --Error description: Operators *: range error (overflow) Make a button with this script to see that 1 followed by 1000 zeros is a number but you can't do maths with it: on mouseUp set the hilite of me to true put 1 into tint put 0 into kount repeat 1000 add 1 to kount put kount put tint & "0" into tint put log10(tint) into myNum if tint is not a number then put "integer failed" && kount exit repeat end if end repeat put (tint +1) is a number set the hilite of me to false end mouseUp Your workaround seems to be the ticket... Jim Lyons wrote: I had very unexpected results from a fairly simple script. I have a long string of 1s and 0s in a variable representing the states of cells in a cellular automata simulation. There can be more than ten thousand cells. To detect when the CA is no longer changing, I save this string each cycle, then compare it with the string representing the next state: [ code to compute next state ] if nextState = curState then StopCA put nextState into curState showCA Sometimes this worked, but many times the CA would stop before it should have; other times it would not stop when it should. I checked the code carefully, looked at the variables in the debugger, and looked in the docs for clues. Finally, I wondered if there could be a difference between numeric and string comparison, so I tried changing the comparison above to: if "z"&nextState = "z"&curState then StopCA Surprisingly (to me) this fixed the problem. I've already digressed too long on this so can't look into it any more right now. Just wanted to put this tidbit in our archives, and see if anyone who knows more than I is not surprised by this, or can correct me if my analysis is wrong... -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
OT: Witnesseth, was TSCC license
At 12:43 AM -0500 10/3/04, [EMAIL PROTECTED] wrote: > I was set up for a laugh by the heading of the non-capitalised text, "WITNESSETH". It's not in either of my dictionaries, and www.dictionary.com has no entries. Good fun, but it leads to some interesting questions. If a legal document contains a made-up word without definition can it have a legal meaning? Michael, "witnesseth" it's not a made-up word, it's old English for "witnesses" (which is why it's not in dictionary.com). Goes along with "thou", "thine", "doeth", "heareth, "seeth", etc. Just FYI, Well, over lunch I looked it up in the Oxford English Dictionary (you know, the _BIG_ one) at the staff club. "Witnesseth" is not there per se, but "-eth" is there as a general appendage for forcing a verb into the second person future perfect ...well, I don't remember exactly, maybe it was pluperfect or slightly imperfect! I interpreted "witnesseth:" to mean both "You will be attesting to the following" and "Give up hope all who read past this point" ;-) -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: TSCC license
At 11:39 PM -0500 8/3/04, Chipp wrote: Just wondering, other than the length, big words and legalese, what specifically was objectionable in the license agreement? I didn't read far enough to get to anything more objectionable than the language itself! I was set up for a laugh by the heading of the non-capitalised text, "WITNESSETH". It's not in either of my dictionaries, and www.dictionary.com has no entries. Good fun, but it leads to some interesting questions. If a legal document contains a made-up word without definition can it have a legal meaning? If an agreement contains words so archaic that the reader can't reasonably be expected to be sure of their meaning is the agreement valid? If an agreement is written in English is it binding on a person who agrees by clicking even if they can't read English? Anyway, back to work... -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
TSCC license
Did anyone read the license agreement for the TSCC codec before clicking through and having it installed? It is 23969 characters long (Rev counted them for me ;-) and includes definitions such as: The above identification of parties and recitals are true and correct. and: The term "access" and variants thereof (including, but not limited to, the terms "access", "accessible" and "accessing", in upper or lower case) shall mean to store data in, retrieve data from or otherwise approach or make use of (directly or indirectly) through electronic means or otherwise. Is this a joke or should I get something like that drafted for my Rev projects? I chose not to install the software. I guess I'll have to live without Chipp's geometry manager tutorial. -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Interrupting a loop
This is something that I do quite often. Messages are generally a better idea than a repeat loop because they allow other handlers to be run at the same time so your user can do other stuff. Here is a skeletal script that should get you going. You will need a button to contain the first script and another called "Pause" with the second script. (I used a custom property to control the increment just to show where another control might alter the process.) First button (give it a custom property called cIncrement and set it to a number): on mouseUp put 0 addSome end mouseUp on addsome add the cIncrement of me to msg if not the hilite of btn "pause" then send addSome to me in 10 milliseconds end addsome Pause button (I used a checkbox): on mouseUp if not the hilite of me then send "addsome" to btn 1 end mouseUp Hope that helps. -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
RE: Checkmarks in option button
Thanks Sarah and Ken, those workarounds will be fine for my purpose. It is a bug though? Regards, Michael -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Checkmarks in option button
I've got an option button with a small list of options and I want to put a checkmark in front of the options that my users have explored. There is a cookbook recipe that sounds ideal: on menuPick theItem put the menuHistory of me into myItemNumber if char 1 to 2 of line myItemNumber of me is "!c" then delete char 1 to 2 of line myItemNumber of me else put "!c" before line myItemNumber of me -- This handler just handles the checkmarks. If you -- want to do other things in response to a menu choice, -- you'll do them here, after the checkmark code. Here's -- a simple example: answer "You chose" && quote & theItem & quote & "." end menuPick If I have that in an option button then two things happen that seem wrong. Problem 1. The button displays the first option even if the user selects another. Something in the script is preventing the button from displaying the chosen item as its label because when I comment out the script the button works fine, although of course, no checkmarks. Problem 2. The checkmarks show up as !c rather than as checkmarks. Something bad has happened to the conversion of !c into a checkmark. The same problem occurs if I try !r (an attempt to get a diamond instead of a checkmark). Checkmarks have worked for me in the past. Is this a new issue with Rev 2.1.2? Has anyone else found this? -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Command Option
If you click the Messages button in the toolbar twice it usually fixes the problem with the command-option thing. I'm pretty sure it was Kevin Miller who gave me that workaround. It seems that the problem can be reliably triggered if you cancel all messages in a script and sometimes if you have to interrupt a script with command-full stop (command-period for Americans). After all this time I am surprised that this problem (bad bug, in my opinion) has not been fixed. In fact, early in the development of Rev I argued on the list that any command involving only modifier keys and a vague action like "hover" is dumb. Much better to have something definite like command-option click in my opinion. -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Text field formatting
I am now regularly making PowerPoint presentations from within Revolution with all of the bells-and-whistles :-) It is very straightforward, but you will need Keynote. Simply 1. Open your PowerPoint presentation in Keynote (the current version opens my lectures without any errors at all!). 2. Set your builds as you want them (Keynote builds are often better than PowerPoint builds). 3. Export the file as a Quicktime movie (you will get a big file if you [like me] choose the highest quality, but CDs are big enough so who cares?). 4. Make a Revolution card with a big player on it. 5. Set the player's filename to the movie file and that's about it. You can make all sorts of customisations from within Revolution, for example I have a button that sets the backrop to black and hides the menubar. It really is easy and reliable. Even if you don't have Keynote I think you will find it is worth buying it to save the time that you would otherwise waste on trying to match PowerPoint in Revolution (voice of experience ;-) ...if you don't have an OS X Mac then maybe it will not be as feasible. Let me know if you want extra details. -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Answer file with filter or of type
How do I successfully filter the file list in OS X? The docs say I can use either filter or of type but I have to use four letter codes. "RSTK" works fine for rev stacks but "JPEG" does not work for files that the Finder declares to be of the kind "JPEG Image". How do I find valid codes? I would like a filter for *.jpg and *.bmp files but all I am achieving at the moment is frustration. Regards, -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
pageIncrement in scrollbars
I am having trouble with scrollbars. It seems as if clicking in the grey area of a scrollbar object changes the thumbPosition by the pageIncrement minus the lineIncrement. Thus if I make them equal there is no effect from clicking in the grey area. If the pageInc is less than the lineInc then the thumb moves backwards! Am I confused? ...well, I AM confused, but is that what is really happening? -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Rev & replace PowerPoint from Rev List
those 'features'. Secondly, many of the features that would be needed are already built into Revolution. For example, the geometry manager is useful switching from edit mode to full-screen mode and the backdrop property can instantly deal with any mis-match between stack and screen proportions. Groups are a natural way to deal with the variety of slide templates. Slide transitions are built in. Image importing needs only a convenient way to get images from the clipboard. Animations are readily constructed using the animations manager. Basically, the similarity of the card and slide metaphors is such that using Revolution to make slideshows is a natural. Importantly, in order to be useful to those like me who already code in Revolution, the project needs only to supply some templates and standard slide components and behaviours; the rest can be scripted directly in Revolution. Thus such a project can be useful even at a minimal stage of development. Extra capabilities can always be added by anyone who has Revolution because the project would be naturally modular. In my imagination we will end up with a standalone application that makes and displays slideshows just like PowerPoint, and a version that runs within Revolution that will make open-ended multimedia presentations convenient for Revolutions scriptors. Anyone keen to help? -- --- http://EZPZapps.com [EMAIL PROTECTED] Software - Internet Development - Consulting -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Red: Rotating Images: feedback requested
Richmond Mathewson was >Having some problems with rotation... I don't know anything much about rotating images, but if the project is just a clock then why not move a graphic around rather than rotate an image? I'm sure you could recalculate the points of even a quite complex graphic in very little time. The code below is from a clock that I built when first learning to use Revolution. It seems to work OK and you can get the trigonometric transformations from it. on oneTick global gClockRunning if gClockRunning then send "oneTick" to me in 500 milliseconds set the tickMessageID of me to the result --seconds put the secondHandLength of group "clock" into L put the clockTime of group "clock" + 1 into currentTime put the long time into theTime convert theTime to dateItems put item 6 of theTime into mySec add item 5 of theTime*60 to mySec add item 4 of theTime*3600 to mySec put -pi/2 +mySec*2*pi/60 into theta put round(L*sin(theta)) into y put round(L*cos(theta)) into x put the loc of graphic "spindle" into myPoint add x to item 1 of myPoint add y to item 2 of myPoint put the loc of graphic "spindle" & return & myPoint into handPoints set the points of graphic "secondHand" to handPoints --minutes (do only every 6 seconds) if currentTime mod 6 = 0 then put the minuteHandLength of group "clock" into L put -pi/2 +mySec*2*pi/3600 into theta put round(L*sin(theta)) into y put round(L*cos(theta)) into x put the loc of graphic "spindle" into myPoint add x to item 1 of myPoint add y to item 2 of myPoint put the loc of graphic "spindle" & return & myPoint into handPoints set the points of graphic "minuteHand" to handPoints end if --hours (do only every 60 seconds) if currentTime mod 60 = 0 then put the hourHandLength of group "clock" into L put -pi/2 +mySec*2*pi/(12*60*60) into theta put round(L*sin(theta)) into y put round(L*cos(theta)) into x put the loc of graphic "spindle" into myPoint add x to item 1 of myPoint add y to item 2 of myPoint put the loc of graphic "spindle" & return & myPoint into handPoints set the points of graphic "hourHand" to handPoints end if end oneTick Regards, -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Matrix inversion
Here are a couple of matrix handlers that I translated from Fortran routines published in the excellent Numerical Recipes book by Press et al. Not enough entirely to invert matrices (that wasn't what I needed them for), but the small additional routine is fully documented in a downloadable pdf from <http://lib-www.lanl.gov/numerical/bookfpdf.html>. For anyone who does numerical work I highly recommend the Numerical Recipes books. #--** LUBKSB ** # Function Revolutionised from Numerical Recipes by MJL # --Input is aMatrix, an n by n square matrix and rhsMatrix, an n by 1 vector # also uses the global indx which is built by LUDCMP # Returns an n by 1 vector solution # For use with LUDCMP to solve linear equations or invert a matrix # Note that the input and output parameters are not fully equivalent to the originals function LUBKSB aMatrix,n,rhsMatrix global indx put aMatrix into a put rhsMatrix into b set the numberformat to "0.#" put 0 into ii repeat with i =1 to n put indx[i] into ip put b[ip] into mySum put b[i] into b[ip] if ii<>0 then repeat with j = ii to i-1 put mySum-a[i,j]*b[j] into mySum end repeat --j else if mySum <> 0 then put i into ii end if put mySum into b[i] end repeat --i repeat with i = n down to 1 put b[i] into mySum if i #--* LUDCMP * # Function Revolutionised by MJL from Numerical Recipes subroutine ludcmp # input is an n by n square matrix, aMatrix # returns aMatrix modified to be an LU decomposed version of itself # also returns (a global) indx which is a vector of the row perms affected by partial pivoting (!) # For use in conjunction with LUBKSB to solve linear equations or invert a matrix # Note that the input and output parameters are not fully equivalent to the originals function LUDCMP amatrix,n global indx set the numberformat to "0.#" put 10^-22 into tiny put aMatrix into a put 1 into d repeat with i = 1 to n put 0 into big repeat with j=1 to n if abs(a[i,j]) >big then put a[i,j] into big end repeat --j if big =0 then answer "Singular matrix in LUDCMP. Procedure failed" exit to top end if put 1/big into vv[i] end repeat --i repeat with j=1 to n repeat with i=1 to j-1 put a[i,j] into mySum repeat with k = 1 to i-1 put mySum-a[i,k]*a[k,j] into mySum end repeat --k put mySum into a[i,j] end repeat --i put 0 into big repeat with i=j to n put a[i,j] into mySum repeat with k=1 to j-1 put mySum-a[i,k]*a[k,j] into mySum end repeat --k put mySum into a[i,j] put abs(mySum)*vv[i] into dum if dum>big then put dum into big put i into imax end if end repeat --i if j<>imax then repeat with k=1 to n put a[imax,k] into dum put a[j,k] into a[imax,k] put dum into a[j,k] end repeat --k put -d into d put vv[j] into vv[imax] end if put imax into indx[j] if a[j,j] =0 then put tiny into a[j,j] if j<>n then put 1/(a[j,j]) into dum repeat with i=j+1 to n put dum*a[i,j] into a[i,j] end repeat --i end if end repeat --j return a end LUDCMP -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Moving images around randomly
I've made a pharmacology teaching tool that has buttons moving around in a box randomly and bouncing off the walls. They also stick to a button when they get close enough. I'm sure you will be able to get some goodnees out of the code. I'll send it to you off-list. Regards, -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Building "serious" scientific applications with RunRev...
Absolutely! I use Revolution as my ONLY programming tool for both teaching and scientific applications (and sometimes both combined in a single project). I have built several projects using matrix algorithms from the "Numerical Recipes" book (Press et al.) and facilitated that by making a fortran and pascal to transcript (partial) converters. Specific programs that work well are a partial differential equation-based numerical simulation system (both Runge-Kutta and Rosenbrock stiff integration routines), a statistical program that does simple Student's t-tests and the more widely appropriate permutations tests, a not-quite perfect (yet) curve-fitting program along with a wide variety of other smaller applications. Relevant built-in functions in Revolution make the building these types of routines quite straightforward. For instance the random() function returns reliably random numbers that have no bias or correlation. I recommend that if you are already familiar with Revolution then you should have no qualms concerning its applicability to scientific computing problems. I can't comment specifically on imaging, psychophysical or colour projects, but I'd certainly give it a go in Revolution before trying to deal with C. My programs are generally a bit slower in execution than commercial programs with similar functionality, but they are certainly fast enough for my purposes and the speed difference is nowhere near great enough to counterbalance the time that learning C might take. Regards, -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Video capture...
For my biomedical experiments I'd like to be able to have about 10 frames per second (greyscale only) displayed and have an array of the pixel values available for processing within Rev. I think these are fairly minimal requirements but I am not sure that Quicktime is necessarily going to give them to me if I don't ask. So I'm asking... I want direct code access (getting and setting) to the pixel values. -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Open driver?
At 11:45 PM -0400 28/4/02, [EMAIL PROTECTED] wrote: > > Specifically I would like to read data from my Griffin iMic USB >> adaptor. > >You don't want to open the USB driver. (Well, somebody might want >to, but that is unlikely.) That is a lower level driver. >Normally, you would open a higher level driver that does what you >want. > >However, in this case, you probably just want the Revolution record >command. > >Dar Scott Actually, I would like to use the iMic as a analog to digital converter. I need to read the data values rather than record the audio. From the sound of the other replies to my question, it sounds like this is not going to be possible. So what is the "open driver" command for? What would be an example of a driver that it can open? -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Open driver?
Has anyone had any success with the "open driver" command on a Mac (OS 9.2)? I want to read data from the USB port and it certainly looks like the open driver command is what I want. However, what are the drivers? Where are they? The docs make it sound like I can just call them by name (i.e. no mucking about with paths) but none of the files in my Extensions folder will open, even those that have "driver" in their names. Any file I name in the open driver command returns the "Can't open that file" message. Specifically I would like to read data from my Griffin iMic USB adaptor. It doesn't come with any drivers, but uses the built in Audio Manager and the "Sound" control panel. I assume that the Audio manager is a driver and that I should be able to read from it with the driver commands. That doesn't seem to be the case. I have fiddled a bit with OS X because the docs say that "On OS X and Unix systems, you can obtain a list of available devices by reading the file "/dev/tty"." but I can't find such a file, or even a "dev/" directory. Any additional info would be helpful because I feel a bit lost. -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Tracking user exits and returns
Thank you Shao Sean, that is exactly what I wanted. Jeanne, if you're reading, I spent a long time in the docs looking for this one without success. I tried the development guide, the dictionary and the troubleshooting section. I notice now that suspendStack is not listed in the 'see also' part of closeStack which is one of the many places I looked. Probably it should be, particularly as the obverse is true. While I'm on the docs (which I find to be generally very useful) I note that I sometimes choose the Dictionary from the Help menu and it takes me to the last-visited definition window rather than what I generally want, the window that lists the words and lets me filter them. Regards, -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Preopenstack confusion
Thanks for the responses to my query. I have used a combination of several of the suggestions: a global holding the has_been_cleaned flag (because it will automatically expire at the end of a session) and empty preOpenStack handlers in the substacks (because my father always liked belt-and-braces approaches). Sorry for the double posting. I sent the first to a miss-typed address and didn't expect it to get there. Regards -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Preopenstack confusion
How do I set a clean-up operation to work when a stack is first opened, but not when I change to another stack such as a substack or even the documentation? My attempt using a preopenstack handler in the stack that I want to clean triggers whenever I open ANY stack, and of course fails because the false-triggering stack doesn't have the objects referred to in the clean-up routine. I want to (i) trigger the handler when the user first starts a particular stack, (ii) not have it operate when that stack is returned to from a different stack in a session, and (iii) only have it operate on the appropriate stack. These sound easy, but I can't see a way to do it without conditionals testing the name of the stack and a global holding information regarding whether the clean-up has been run already. Surely it is easier than that! Regards, -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
messages to buttons when the mouse is already down
I would like to track the movement of the mouse through an array of buttons by hilighting each button that the mouse (button already down) passes over. However, the mouseEnter, mouseMove, mouseWithin messages are only sent to the first button because that button receives the mouseDown event and is the target. Similarly the mouseControl function (yes, it took me a couple of tries to notice that it was a function and not a message!) only returns the target. How can I get the other buttons to hilight without requiring the user to click each individually? -- Michael J. Lew Senior Lecturer Department of Pharmacology The University of Melbourne Parkville 3010 Victoria Australia Phone +613 8344 8304 ** New email address: [EMAIL PROTECTED] ** ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution