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
[1156x3]
Cool, is Ashley re-working rebGUI for VID 3 or will it be redundant. 
I've never bean totally happy with a third party widgets (like Python 
+ vxWidgets) or Java + Mattisse etc
The accessors to the widgets need to be developed by the language 
developers normally IMO
I had a go with Ruby and vxWidgerts - it really put me off
Henrik
21-Jan-2008
[1159]
I'm not sure RebGUI will be available for R3, but he knows that better 
than me. I've never used RebGUI much. :-)
SteveT
21-Jan-2008
[1160x2]
No I've downloaded it but put it to one-side, too much to learn at 
the moment.
Can a style include events?
Henrik
21-Jan-2008
[1162]
yes, you can manipulate the events for a style with the FEEL object.
SteveT
21-Jan-2008
[1163]
Right so I could create  styles to override the field and include 
params for number of chars to allow or convert to upper and perhaps 
use parse to restrict to numbers ?
Anton
21-Jan-2008
[1164]
Yes, you can trap and handle in your own way all of the events a 
field style can receive.
SteveT
21-Jan-2008
[1165]
Thanks Henrik , I'll have a go with that today.
Anton
21-Jan-2008
[1166x2]
print mold svv/vid-styles/field/feel

You can see the engage function is where most of the event handling 
is.
You can redefine the engage yourself like this:
layout [
	style my-field field feel [
		engage: func [face action event][
			..
		]
	]
]
Henrik
21-Jan-2008
[1168x2]
that's basically what vid-field.r does. it takes the existing FIELD 
style and changes its FEEL object to contain more options for better 
text handling.
Anton's made a version that has undo/redo, right?
Anton
21-Jan-2008
[1170x3]
You can copy the code from the default engage function, but you will 
fall into a trap; some of the words used in the default engage handler 
are bound to specific contexts. Your code will bind all the words 
in your context or global context. I'm talking about the words focal-face 
(which is in system/view), unlight-text, highlight-start, highlight-end 
and edit-text (which are in ctx-text).
So you should bind your code first to system/view, then to ctx-text, 
before making the function:
style my-field field feel [
	engage: func [face action event] bind bind [

		; your code which uses focal-face, unlight-text etc...

	] system/view ctx-text
]
SteveT
21-Jan-2008
[1173]
Ok, just found some mention of ctx-text in the docs.
Anton
21-Jan-2008
[1174]
Henrik, unlimited undo/redo.
Henrik
21-Jan-2008
[1175]
probably a good idea to learn about bindings first to know what it 
means :-)
Anton
21-Jan-2008
[1176x2]
My edit-panel style is actually based on PANEL style, but pretty 
much supplants AREA, if you're happy with monospace font. (I haven't 
supported a single-line FIELD-like style, but could be easily done 
I expect.)
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!