World: r3wp
[I'm new] Ask any question, and a helpful person will try to answer.
older newer | first last |
Anton 21-Jan-2008 [1177] | See the Editors group to try out the edit-panel style. |
SteveT 21-Jan-2008 [1178] | One other funcionality I'm missing is to be able to set the tab order ! They won't always be the presented order. And wether CR should act a sTAB or not. |
Anton 21-Jan-2008 [1179x2] | Aha... the built-in tab-cycling system is simplistic. I made my own but it still goes in pane order. |
whether CR can act as tab can be determined with a face flag. | |
SteveT 21-Jan-2008 [1181] | Ok thanks, Tab order might be cobbled by enlosing field in two or more vertical panels. Sorry missed the flag for CR. |
Anton 21-Jan-2008 [1182x2] | layout [f: field] probe f/flags ; == [field return tabbed on-unfocus input] view layout [f: field with [deflag-face self return]] |
AREA does not have the 'return flag. probe svv/vid-styles/area/flags ; == [tabbed on-unfocus input] | |
SteveT 21-Jan-2008 [1184] | whats svv ? |
Anton 21-Jan-2008 [1185x3] | You could also handle key events and trap the tab key, directing the focus to any face you like. |
system/view/vid | |
A very handy shortcut. | |
SteveT 21-Jan-2008 [1188] | ah thanks |
Anton 21-Jan-2008 [1189] | view layout [field feel [insert body: second :engage bind [if all [act = 'key event/key = tab][focus f3 exit]] body/2] field f3: field "This is f3"] |
SteveT 21-Jan-2008 [1190] | I knew all this was possible, and I know a lot of people prefer things at this level to cover their own requirement. But, returning to my original point. To make Rebol more general use - we need standard behaviour like this at a highr level? |
Henrik 21-Jan-2008 [1191] | absolutely. VID3 will not require this level of knowledge to produce something useful and complete. |
Anton 21-Jan-2008 [1192] | I agree too. |
SteveT 21-Jan-2008 [1193] | Thanks Anton - what I was missing in my efforts last night was the 'exit' that obviously releases the event. I was getting frustrated cos it just sits there doing nothing ;-) |
Anton 21-Jan-2008 [1194] | Yeah I forgot it first time around too. |
SteveT 21-Jan-2008 [1195] | So with the 'all' 'exit' combination you are handling any events (keypresses) you like in a form of 'switch' ? |
Anton 21-Jan-2008 [1196x2] | if all the following conditions are true: - the act (action, same as event/type) = 'key (and not 'down, 'up mouse presses etc.) - the event/key = tab (the tab character) then: focus a face exit |
I've inserted that at the top of the function body, so if we handle the tab char key event, then we exit and it doesn't have a chance to be handled by the rest of the default code (which actually calls upon the large edit-text function from ctx-text to handle key events). | |
SteveT 21-Jan-2008 [1198] | With 'ALL' and 'ANY' - in parse you also have 'SOME'. If you do 'exit' does it exit the event trap or can it move onto another event? |
Anton 21-Jan-2008 [1199x2] | The parse dialect words 'all' and 'any' are not the same as normal rebol 'all' and 'any'. Don't get confused by that. |
We're not using parse here. | |
SteveT 21-Jan-2008 [1201] | Got it! |
Anton 21-Jan-2008 [1202] | (Note that the above example where I set 'body is a bit "polluting". It sets the 'body word global. It's not strictly necessary, you can just replace body/2 with second second :engage. I just added it to make the meaning clearer.) |
SteveT 21-Jan-2008 [1203] | I wondered if the Rebol versions ended up becoming a lower-level parse. |
Anton 21-Jan-2008 [1204] | Mmm.. I don't think so... |
SteveT 21-Jan-2008 [1205] | So, can we have one engage that can act upon more than one event? I think that's my question! |
Anton 21-Jan-2008 [1206x4] | Of course. Which events ? |
My example shows how to inject any code you like. | |
Ah, you wanted to filter out non-number characters, etc ? | |
yeah just exit when not find "0123456789" event/key | |
SteveT 21-Jan-2008 [1210x2] | Yes, on a particular field I want to control what the user can and can't enter |
On one field I want to trap and convert any chars to uppercase, but also stopthe user from antering more than say 5 chars ! | |
Anton 21-Jan-2008 [1212x2] | either 5 > length? face/text [ ; allow event to pass through ][ exit ; too many chars ! don't allow it ! ] |
or combining filter with length check: if any [ not find "0123...89" event/key 5 <= length? face/text ][ exit ] | |
SteveT 21-Jan-2008 [1214x2] | Yeah I was trying to approach it with ( if chars < 6 allow it ) which got me in a mess. |
I'm sorry for all these questions - It sounds like I want you to do my work for me! I don't maind having to figure some things out myself . But I was asked to present waht I found difficult from a newbie point of view. | |
Henrik 21-Jan-2008 [1216] | you're lucky to have us around, otherwise some of this would take a long time to figure out. I was frustrated for a long time about many of these things. |
SteveT 21-Jan-2008 [1217] | Very True, hopefully I will be able give back - in time |
Henrik 21-Jan-2008 [1218] | particularly bindings can be baffling, because it looks like function names are pulled out of thin air. :-) |
SteveT 21-Jan-2008 [1219x3] | Yes, I'm starting to understnad dialects and domains. Bindings I'm clue-less (LOL) |
Yes on Antons one liner with the three filed and overriding the tab to filed three the 'bind' is alien to me! | |
field ! | |
Henrik 21-Jan-2008 [1222x2] | bindings are actually simply tieing a word to a list of words (a context), which is an object. outside the context, the word has no meaning, yet it can appear anywhere in code |
I believe this is how local words work in a function definition. the words don't work outside the function, because they are bound to its context. | |
SteveT 21-Jan-2008 [1224] | Right one of the fundamentals of Rebol is that Word behaviour can change or is set by what contaxt it's in ? |
Henrik 21-Jan-2008 [1225x2] | yes, by using the BIND function, you can bind a word to one or more contexts simultaneously. |
yet it can appear anywhere in code <--- actually that's a bit wrong. if the word is not defined for a particular context, then of course it's useless there. but if you use the word in the right context, for example inside an object in which it was originally created, then it will have meaning. | |
older newer | first last |