r3wp [groups: 83 posts: 189283]
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r3wp

[I'm new] Ask any question, and a helpful person will try to answer.

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
[1225x3]
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.
you can study this by creating objects with words in them and try 
to bind them to different contexts (other objects).
SteveT
21-Jan-2008
[1228x2]
I understand that. Are contexts just what I would call an object?
Ah! you just answered that  ;-)
Henrik
21-Jan-2008
[1230]
yes. try: