RE: Checkbox/field related question
Hi Jonathan, Thanks for your script! I think I see where you're going with it (though the second line is still a little confusing; I'm still grasping when to use "me" and/or "target"). What I'm doing instead is using graphics for checkboxes. So, in my if statement, I'm checking as follows: if the imageSource of char 1 of line currentLine of field "List Items" is "Checkbox Empty" then set the imageSource of char 1 of line currentLine of field "List Items" to "Checkbox Filled" else if the imageSource of char 1 of line currentLine of field "List Items" is "Checkbox Filled" then set the imageSource of char 1 of line currentLine of field "List Items" to "Checkbox Empty" end if I wasn't able to think of this solution before looking at your script. Thank you for shedding light; this list always does! -Jason -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Lynch, Jonathan Sent: Tuesday, March 01, 2005 12:05 PM To: How to use Revolution Subject: RE: Checkbox/field related question I am chiming in late on this - so I might be confused... But if you are looking to have a checkbox in a field that switches back and forth when checked - I have a field that does this. The following script goes in the field: On mouseup put word 2 of mousecharchunk() into aaa put character aaa of me into B if chartonum(B) = 254 then put numtochar(168) into character aaa of me set the textfont of character aaa of me to "wingdings" set the textsize of character aaa of me to 16 else if chartonum(B) = 168 then put numtochar(254) into character aaa of me set the textfont of character aaa of me to "wingdings" set the textsize of character aaa of me to 16 end if end mouseup just make sure the field has the checkbox character in it to start out with: * I know - that probably looks like a bullet point - but if you change it's font to wingdings, it will look like a checkbox. If this is covering old ground for you, my apologies. ___ use-revolution mailing list use-revolution@lists.runrev.com http://lists.runrev.com/mailman/listinfo/use-revolution ___ use-revolution mailing list use-revolution@lists.runrev.com http://lists.runrev.com/mailman/listinfo/use-revolution
RE: Checkbox/field related question
Thanks Ken and Mark! I'm not using any HTML text in the fields...just plain text. So, I guess that means I'll be using imageSource for my checkboxFilled.png and checkboxEmpty.png. I'll just have to watch out for when the select button is pressed: on ButtonPress theButton switch (theButton) case selectKey -- checked or unchecked graphic as the first character on the hilited line? -- replace graphic with the other one break end ButtonPress When using imageSource, how can I get Revolution to return the name of the control that was used for that particular image? -Jason -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Mark Wieder Sent: Saturday, February 26, 2005 11:51 AM To: How to use Revolution Subject: Re: Checkbox/field related question Jason- KR> Personally, my suggestion would be to use a list field with two KR> separate images, one rectangle with a check mark, and one rectangle KR> without. That That would be my approach, too. Assuming that you're already setting the image by setting the html content of the line, then all you need to do is change the imageSource and set the htmlText again. function Available strWhat return "" & strWhat end Available function Unavailable strWhat return "" & strWhat end Unavailable set the htmlText of line whichLine of field "myField" to \ Available(the hilitedText of field "myField") -- -Mark Wieder [EMAIL PROTECTED] ___ use-revolution mailing list use-revolution@lists.runrev.com http://lists.runrev.com/mailman/listinfo/use-revolution ___ use-revolution mailing list use-revolution@lists.runrev.com http://lists.runrev.com/mailman/listinfo/use-revolution
Checkbox/field related question
Hello again fellow revolutionaries! Since I last posted, I've made a lot of progress on my mobile phone simulation stack. There's a sub-stack containing contacts, and I have a couple of cards in the mainstack (Prototype) which are reading information from the cards in the Contacts sub-stack. The following screen provides a good example and background of what I've done: http://img71.exs.cx/img71/9557/listitems7ci.png All of the text you see (except for the title of the screen and the softkeys) is being pulled from cards in the Contacts sub-stack. Each blurred out line corresponds to a card from that stack, and the content of the field (i.e. the names) is generated dynamically when the card is opened. It's a multi-line field, and the icons are put there by using imageSource. That made it easy to lay everything out according to the screen dimensions I was provided. Now, I've come to a point where I want to select/deselect multiple names to add them to a group. This is a wireframe of the proposed design from Visio: http://img71.exs.cx/img71/8803/checkboxes8wd.png Like the previous example, I need this screen to be generated dynamically when the card is opened, by pulling contact names from the database (e.g. field "First name" of card x of stack "Contacts"). However, I'm confused about how to highlight checkboxes and text at the same time. (Like a mobile phone, scrolling up and down hilites a single line WITH the checkbox). Since each checkbox is a button, is it better to have the contact name as the button's name, or have the checkbox grouped with a field? It's definitely tougher since I don't know if I can do this with a single multi-line text field, and I also have to figure out where to create and place the checkboxes when the card is opened. Like always, all help is welcome. I think I'll be buying dinners for many people once we meet up in Monterey. :) All the best, Jason Silver Human Factors Engineer, Sr. QUALCOMM Inc. [EMAIL PROTECTED] ___ use-revolution mailing list use-revolution@lists.runrev.com http://lists.runrev.com/mailman/listinfo/use-revolution
Dynamically creating notes that lay "on top" of cards
Being such a bottom-up thinker, I'm having some trouble taking a step back and looking at the overall structure for this design. On our "unstable yet maturing" mobile phone simulation, there are times when dialogs (from here on in, I'll call them notes) must be displayed on top of whatever is already on the screen. For example, you may have written a text message and pressed the "End" key; you'll be asked if you want to save what you've written. What happens is as follows: 1) The user does something which causes the note to be displayed 2) The existing screen is dimmed, and the note is displayed on top. 3) The softkeys are changed so that they relate to the note (e.g. "Yes" and "No") 4) The user decides on a relevant action. Okay, now the Revolution side of things. To dim the screen, I've created a solid white image that uses a blend so that the screen appears faded. Creating a note is simple - it would just consist of two fields grouped: the "Title" of the note and the "Body" of the note. Softkey changes can be done with a function, passing two parameters (name of left softkey, name of right softkey). But here I am thinking bottom-up again... The "Big picture" questions concern how these new notes interact with the existing card. Since there can be several different notes that can overlay on the card (albeit one at a time), it seems silly to have all these notes pre-created and invisible. So, the big question is, can we just have a note, then simply feed it the title and body when it is displayed? Also, since the softkeys change, the behavior has to change for those buttons. The "ButtonPress" message which I previously created was handled at the card (specifically leftSoftkey and rightSoftkey). Since that one card can either not be displaying a note, or have one of any number of notes on top of it, does it seem sensible to create yet another switch statement? The condition would have to check if a note is visible. But the behavior can be different depending on which note...maybe I should create the notes, have the behavior encapsulated in that note (i.e. the field), and pass the ButtonPress message to the note if there's one up? There are so many ways to do things in Transcript, and moreover, in Revolution, that I don't know what to try first. Any advice on which direction to go would be helpful. Thank you! Best regards, Jason ___ use-revolution mailing list use-revolution@lists.runrev.com http://lists.runrev.com/mailman/listinfo/use-revolution
RE: mouseDown/Up - no actions when not on buttons
Even without storing the selectedField into a local variable, I was still getting errors when clicking on the stack. The problems persisted even when there was an invisible button behind the "normal" buttons. I think the best way to prevent errors is the following method: Store the current location of the cursor in a local variable for the card. For all buttons that depend on the selectedField being in an text box, run a function to return the name of the selectedField. If empty is returned, then we know we're not in "User ID" or "Password" anymore. Restore the previous known location from the variable, and go there. I have yet another question (actually one that my boss would like me to pose to the mailing list), but I think I'll start it in a new topic, as it has nothing to do with buttons. :) All the best, Jason -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Pat Trendler Sent: Wednesday, February 09, 2005 5:50 PM To: [EMAIL PROTECTED]; How to use Revolution Subject: Re: mouseDown/Up - no actions when not on buttons J Landman Gay wrote: snip > Instead of trying to get the name for all cases, change the syntax to: > > case navUp > -- Determine which text field the user was in > if the selectedField contains "User ID" then -- change this > focus on field "Password" Jaqueline, The above is always empty. If you use: > put the short name of the selectedField into activeField > if activeField = "User ID" then as Jason did, you can store the selectedField. Of course, the rest of your recommendations are a far better way of coding. Pat [EMAIL PROTECTED] ___ use-revolution mailing list use-revolution@lists.runrev.com http://lists.runrev.com/mailman/listinfo/use-revolution
mouseDown/Up - no actions when not on buttons
Hello (again) :) After some very useful advice from Jacqueline Landman Gay at Hyperactive, I've changed the structure of my mobile phone sim tool. Now, instead of the buttons being on a palette, they're grouped and behave like a background, showing up on every card. When buttons are pressed, they send a custom ButtonPress message with the name of the button being pressed to the card. The card then has a switch statement, and does some action based on which button was pressed. The current card I'm working on is a Login type screen, with two focusable/editable fields, User ID and Password. (Please see my shared stack in RevOnline's User Spaces; the username is jsilver). In the switch statements, I have this script when the user presses up (or down): case navUp -- Determine which text field the user is currently in put the short name of the selectedField into activeField if activeField = "User ID" then focus on field "Password" else -- The user must be in the password field focus on field "User ID" end if break This works all well and good, except when pressing on an area that's not a button (in my stack, the purpleish area). The cursor then disappears from either the User ID or Password fields, and then when pressing Up or Down, the following error occurs (because the focus is not in a field): Type: Chunk: no target found Object: Login Screen Line: put the short name of the selectedField into activeField Basically, I never want the focus to leave either the User ID or Password fields; this simulation is supposed to be controlled solely by the buttons placed in the "Buttons" group. Is there an easy way to block the mouseUp (or mouseDown?) handler from doing anything when not on those buttons? I've tried adding "exit mouseDown" type handlers in the card and stack, but this doesn't do anything. Any help is appreciated. Thanks again! Jason Silver Human Factors Engineer, Sr. QUALCOMM Inc. (858) 845-3444 [EMAIL PROTECTED] ___ use-revolution mailing list use-revolution@lists.runrev.com http://lists.runrev.com/mailman/listinfo/use-revolution
Palette as a stack or sub-stack, and a mouseUp/mouseStillDown question
Hello everyone, I think I'm becoming a regular poster to this mailing list! :) Anyways, I've got a question regarding how I'm setting up the architecture of my program, and then a button question. Up until now, I've had a stack "Screen", which is simulating the screens of our company's would-be handset. When I first was playing around in Revolution, the stack contained a display and lots of buttons, much like a usual mobile phone. However, to simplify screen creation, I made the stack "Screen" only 240x320 (the size of the actual screen), so it would be easy to place icons and fields in exactly the same position as they would be on the real phone. I thought that I would control the screen with particular keyboard presses (e.g. "S" for the Send key, "E" for the end key, etc.) At this point, I think it's going to be easier to make buttons to navigate the interface, because we'd also like to be able to type into specific fields using the keyboard. So, I've created a sub-stack called "Handset Buttons", and I've made it a palette. Am I heading down the right road, or is it better to have the palette in a separate stack? To give some context, once the user presses a button on the palette, such as "Send", the "Screen" stack will be jumping to a particular card (and this can change, depending on what field is highlighted on the current card). Imagine highlighting an particular menu item on your mobile phone and pressing select; the next screen is entirely dependent on what line you're highlighting. When I'm in fields on the "Screen" stack, how do I monitor which buttons are pressed on the "Handset Buttons" sub-stack? The situation is further complicated by certain buttons I want to have on the palette that will do two different things, depending on whether you're short-pressing the button, or pressing and holding the button. It seems logical to have a long-press on the phone map to a "mouseStillDown" message in Revolution. However, I want to make sure that when there's a long press of a button, that the "mouseUp" message is NOT sent afterwards. So, the mouseUp of a button is the short-press, and the mouseStillDown is the long-press (that doesn't do the short-press as well). Is this accomplish by message sending or passing? Or am I completely off-base? Phew, I think that explains everything I'm dealing with at the moment. I wanted to thank all of you again for getting a newbie like myself off the ground with Revolution and the Transcript language. Your help has proven invaluable! Jason Silver Human Factors Engineer, Sr. QUALCOMM Inc. [EMAIL PROTECTED] ___ use-revolution mailing list use-revolution@lists.runrev.com http://lists.runrev.com/mailman/listinfo/use-revolution
Rev 2.5 on WinXP: Issues with multiple monitors
I'm not sure this is classified as a "bug", but I've noticed an issue in Revolution that irks me. The computer provided to me by my company is a laptop; while in the office, I have it connected to a docking station which connects to an external monitor. This lets me use the big 21" CRT as my primary display, and the laptop screen as a secondary display. For Revolution, I usually situate things so that the Documentation window is open on the second screen, and possibly the Application Browser, Inspector, etc. The problem arises when I'm working without that second screen. In this case, the laptop screen becomes the primary (and only) display. Most applications are multi-monitor friendly, and they realize that the laptop is the only screen, so they better display things on it. Revolution does not have this capability. I'll click on the "Documentation" button, and it seems like nothing is happening. Well, the Documentation window is up, but it's 1500 or so pixels to the right, on a screen that's not there. I haven't figured out a way to get it back to the main display without hooking the laptop up to the second monitor, moving the window, etc. I'm sure there's a workaround (e.g. typing some "move" command into the Message Box), but I was hoping that this issue could be looked at, and possibly changed in forthcoming releases of the software. Jason Silver Human Factors Engineer, Sr. QUALCOMM Inc. [EMAIL PROTECTED] ___ use-revolution mailing list use-revolution@lists.runrev.com http://lists.runrev.com/mailman/listinfo/use-revolution
Newbie question: use of fields for mobile phone sim
Hello everyone, Now that our company has bought Revolution, I have much more motivation to use this product! Anyways, I had a question on the best way to set up text and images in fields. Without further ado... Since I'm creating a prototype of a mobile phone application in Revolution, the boss would like it to be "as close as possible" to the real thing. To give some context, take a look at this picture: http://img93.exs.cx/my.php?loc=img93&image=generic8gy.jpg Each line must be 29 pixels high, and the text 42 pixels over from the left. There may be different icons on each line, which are 7 pixels over, and vertically centered on each 29 pixel-high line. Now, I'm wondering the best way to implement this. The text in each line will be pulled from a stack containing names (imagine a list of contacts). Is it better to: A) Create several single-line fields? The problem with this comes into play when there are more than 8 items...figuring out scrolling could be awful. B) Create a multi-line field. This seems easier, but how do I put different images on each line? If the user scrolls up and down, I'd like the correct image to stay on the correct line. C) Something I haven't thought of yet? The thought of different icons (and dealing with the transparency) is giving me headaches. How do I best approach this as a Revolution newbie? Any help is greatly appreciated. Thanks, Jason ___ use-revolution mailing list use-revolution@lists.runrev.com http://lists.runrev.com/mailman/listinfo/use-revolution
RE: What do most Rev developers do?
Hi Jonathan, I belong to a UI Design group here at Qualcomm; my day-in/day-out job consists of designing the user-interface for applications on cell phones. I never touch code; all of our backgrounds in the group are related to the cognitive sciences. We recently purchased Revolution at Qualcomm to develop some fairly high-fidelity prototypes of how things will look on a cell phone before they're "really" programmed by the engineers. It's my first experience with a Metacard language, but so far, it's enjoyable. :) Sincerely, Jason Silver Human Factors Engineer, Sr. QUALCOMM Inc. [EMAIL PROTECTED] > I have a question for you guys: > > What do you do? ___ use-revolution mailing list use-revolution@lists.runrev.com http://lists.runrev.com/mailman/listinfo/use-revolution
Improper code or a bug in Revolution?
Hello all, Several weeks ago I posted to the use-revolution list to ask for advice on making transparent buttons, used in a handset simulation. I'd like to thank all of you who replied to my posting; the Revolution developer community is a very friendly and helpful place! Now, onto my question. I seem to have hit a roadblock with the simulation, and unfortunately I cannot open my sim stack without crashing Revolution. I had two snippets of code in the sim, but I'm fairly sure they wouldn't have caused problems. The first bit was in my main stack "Handset simulation", used to find out how many cards I had in a sub-stack, named "Contacts" (this would be the database for the address book application): on OpenStack global numberOfAddressBookEntries get the number of cards of the stack "Contacts" put it into numberOfAddressBookEntries --Testing statement: answer "The number of address cards is " & numberOfAddressBookEntries end OpenStack The other bit of code was with my transparent buttons. They were in a group called "Keypad", and I was trying to script the group instead of each individual button: on mouseUp -- copy the label of the button clicked on into the buttonPressed variable put the label of the target into buttonPressed -- Testing statement: answer buttonPressed & " has been pressed!" end mouseUp Everything seemed to work fine, but I think a problem occurred after installing Devolution. I fooled around with the "Explicit variables" option, which led to this disaster. I uninstalled everything, reinstalled Revolution (still on trial, waiting for the company to purchase a license), and now I get these errors: http://img91.exs.cx/img91/7342/reverror27qo.png http://img11.exs.cx/img11/145/reverror14qp.png It looks like something is messing with the license.rev file. Two interesting things to notice: - In the Application Browser window, my "Handset Simulation" stack doesn't even show up. - The error dialog that appears changes, and I have no idea why. If explicitVariables was even set to "true", I haven't figured out any way to get into the stack to edit the script. I find it hard to believe that a badly written stack can bring down the entire IDE. Is my stack hosed? Where do I go from here? Thank you for your help. Sincerely, Jason Silver Human Factors Engineer, Sr. jsilver at qualcomm DOT com ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Newbie question about image/button relationships
Hello all, This is my first post to the use-revolution mailing list, and I have a question about what images/buttons can (or cannot) do. Our company has chosen Revolution to create prototypes of handset applications, so we can mock them up and find potential areas of confusion before committing to the user interface of the application. I only have a handful of programming knowledge, as my background is in Human-Computer Interaction, focusing on UI design and usability; this is also my first experience with a "card-based" language. Now, onto the issue. I have an image of a mobile phone keypad (in JPG format), and I would like for the user to be able to click on specific areas, causing changes to occur on the "screen" (which is a field). Is there a way to Revolution to watch for specific areas of the image to be pressed (such as the coordinates of a "Send" key, vs. the coordinates of an "End" key)? Keep in mind, this is only one image, not a bunch of images. If this is not possible, do I have to create a group of buttons on top of the image that are all set so they are not visible? Thank you in advance for your help. I'm happy that a mailing list like this exists! Best regards, Jason Silver Human Factors Engineer, Sr. QUALCOMM Inc. [EMAIL PROTECTED] ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution