• Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

AltME groups: search

Help · search scripts · search articles · search mailing list

results summary

worldhits
r4wp4382
r3wp44224
total:48606

results window for this page: [start: 30301 end: 30400]

world-name: r3wp

Group: View ... discuss view related issues [web-public]
Fork:
2-Apr-2008
I guess the answer, essentially, to my overall question is: REBOL 
programmers (or at least REBOL/View programmers) don't like Ajax, 
by its intrinsic nature.  Thus they are seeking to leapfrog apps 
that rely on Firefox and web standards by running on a new native 
cross-platform interface.  In the meantime, the bet is that those 
trying to maintain brittle PHP and javascript codebases will be fight 
a losing battl that will drown under its own weight, and REBOL/View 
will step in as the "real" Web 3.0.
Fork:
2-Apr-2008
And thus, effort is not directed by the core development team on 
browser-targeted development, though it's being pursued by those 
to whom it is of interest who also happen to like REBOL.  (e.g. Qtask)
BrianH:
2-Apr-2008
In general, I don't like AJAX, but with HTML 5 it looks like it might 
become almost acceptable. Still, I would find it easier to generate 
such code from REBOL dialects than to write it directly. That is 
not the reason I don't do browser apps as often though.


The real reason is that most of the applications people use don't 
use web browsers at all. Most of the applications I use work offline, 
and no web interface works offline (though Google, Adobe and the 
Mono project are working on it).
Fork:
2-Apr-2008
Yes, definitely, I am advocating generative approaches... not wishing 
to generally pollute one's mainline code with javascript and HTML.
Pekr:
2-Apr-2008
and. We have, well, I have, - the name for the browser plug-in product 
- FireSide :-) We will Fire from the Side. And FireAnything is popular 
today ...
Pekr:
2-Apr-2008
There is also no third small technology for browser plug-in, so small 
and agile as View ... so Flash, Silverlight, View .... or do php, 
perl, python, other guys have anything at hand?
Fork:
2-Apr-2008
So what I'd worry about is having REBOL closed source and under control 
of a single authority structure, and then to entertwine the fates 
of the pieces together so tightly.  That could mean REBOL could have 
succeeded as a language and grown in acceptance if it hadn't been 
for REBOL/View having such high ambition for being the delivery vessel 
for apps.  Just my opinion...
BrianH:
2-Apr-2008
REBOL is getting less and less closed source every day, and the authority 
structure is not that different than the developer groups of most 
major open source projects. Completely open acceptance of submissions 
is a nice-sounding idea, but once a project gets large they have 
to rein in the submissions just to keep the project semi-stable and 
reasonably bug-free.
BrianH:
2-Apr-2008
If you want to really know the philosophical landscape here, then 
here are some basics:

- We trust Carl's judgement on language design - otherwise, we'd 
be using a different language.

- Most of the language features in R2 were intentional, even the 
ones that seem weird to people who are used to other languages.

- This is even more the case with R3, as the decisions made there 
have to get through a gauntlet of highly skilled REBOL programmers.

- The language features that were mistakes may not be the ones you 
think were, and most of those are getting fixed in R3.

- We value tight programming: It is not uncommon to replace dozens 
of lines of code with a just a few lines of tight code.
BrianH:
2-Apr-2008
The correlary to that first point is that we accept the closed source 
core of R3 because it gets us a better language. If we have problems, 
we discuss them, and they get fixed. There are code escrows for the 
event of RT going out of business, Carl dying, whatever.
BrianH:
2-Apr-2008
I agree with you that the monolithic closed source of R2 was a problem 
that inhibited adoption. This a problem that is getting fixed in 
R3, and to a certain extent R2 as well starting with 2.7.6.
Henrik:
2-Apr-2008
R3 is the culmination of 8 years of experiencing what's wrong and 
right with R2. It's nature and philosophy is basically the same (small, 
simple, lightweight), but there are improvements in almost every 
aspect of it. I don't expect R3 to be feature and design complete 
probably for another 6-12 months as there are still many things missing. 
R3 is the third attempt at REBOL. The first one was about 30 times 
slower than R2 and ate much more memory, because the design philosophy 
was different (Carl didn't implement R1). With R2 we had the right 
philosophy in place, but the implementation lacks in many areas, 
and it has many bugs. With R3 we're getting much closer to fulfilling 
that philosophy with design from long experience with R2, openness 
and richness without the bloat.
Dockimbel:
2-Apr-2008
There are code escrows for the event of RT going out of business.

 Isn't that only for big customers that had signed special contracts 
 with RT ? What about us ? In the worst case, will REBOL be open-sourced 
 or will we have to trash all our REBOL apps and go learn a new programming 
 language ?
Graham:
8-Apr-2008
I've got this application which does some http stuff ( posting images 
) and then waits for user input.  But after processing a bunch of 
images, VID becomes sluggish .. any suggestions as to what might 
be causing this?
Gabriele:
10-Apr-2008
henrik, unless there's a bug, that should not really be better. using 
read-io and write-io with a buffer may be better.
[unknown: 5]:
10-Apr-2008
Gabriele can you give us a brief understanding of what read-io and 
write-io are for or when to use them as I know there was a lot of 
communications from RT early on about shying away from using them.
Gabriele:
11-Apr-2008
Paul, indeed read-io and write-io are no more necessary. however, 
if reusing the same memory buffer is the intent, then they're the 
only way to do that. it may be better to just copy a small part of 
the file at a time and let the GC do its job instead.
Ingo:
14-Apr-2008
I remember, that it is possible to use fonts, other than the rebol 
supplied ones, but can't remember _how_ (and haven't been able to 
find anything so far.

Is it possible to even use uninstalled fonts? (Truetype, Opentype, 
Type 2)?
Graham:
14-Apr-2008
works on debian based distros and puppy linux that I've tested.
Ingo:
14-Apr-2008
I'm on Ubuntu, and it works for me.
Graham:
18-Apr-2008
Any view users here?  I'm looking for a routine that will trim the 
whitespace from an image, and will also trim junk from an image. 
I'm taking a rectangular piece of some scanned text, and if I cut 
partly thru the text above, or thru the top of the text below, I 
wish to remove those parts just keeping the word I'm interested in 
....
Graham:
18-Apr-2008
Perhaps I can just inch along the top and move down until I reach 
all whitespace across the image to reach my border.
Graham:
18-Apr-2008
Invert the image and then do it again ....
Anton:
18-Apr-2008
A possible algorithm for the new junk cropper could be:

1) advance inwards from each edge until there is a full white line 
parallel to the edge.

2) if a white line was found for each edge, then advance inwards 
again, this time searching for a non-full white line, (eg. with a 
few pixels from the desired text in it). Step back a line and you 
have your crop region.
Anton:
18-Apr-2008
Graham, should the function be fully automatic or can there be user 
selection involved ? eg. we could divide the image into regions and 
let the user click the regions which are junk.
Graham:
18-Apr-2008
Anton, I'd like fully automatic, and yes, grayscale.
Graham:
19-Apr-2008
Not in my case and I think you might then come up against the problem 
of deciding what is a border and what is a character.
Anton:
19-Apr-2008
Yes, I would grade the scan line according to ratio of  black : white 
 pixels on the line. Text is probably between 20-85% black pixels, 
and borders could perhaps be detected at > 95% black. Anyway, if 
you don't need it, that's much easier :)
Anton:
19-Apr-2008
I have something that's starting to work.

If we can preprocess the greyscale images so that they're bitonal 
(black and white), and denoised, then my algorithm has a chance.
Anton:
19-Apr-2008
Almost all my function libraries are in anonymous contexts.

Basically, DOing the library file (eg. do %auto-crop-bitmap-text.r) 
returns the context, and you just GET out the words you are interested 
in.
This job is eased a bit by my INCLUDE function.
Anton:
19-Apr-2008
(note, the cropping is only off the top and bottom edges, ie. vertically 
cropped only.)
Graham:
19-Apr-2008
what happens if you include two words above and below in the image?
Anton:
19-Apr-2008
If there's two words above and below in the image, like this:

	line one
	line two
	middle
	line four
	line five


then the 3 middle lines will be included, unless there is some white 
above the top line or some white below the bottom line (in which 
cases they will be included, respectively).
Anton:
19-Apr-2008
Currently the algorithm scans downwards and upwards simultaneously, 
looking for non-white content. When it doesn't find any, it has nowhere 
to crop to, so no cropping happens. I can change it so that when 
the scans bump into each other they set that as the "content found" 
position, and, the scan lines being right next to each other, will 
result in a 0-height crop region. I will check for that case and 
return none instead.
Anton:
19-Apr-2008
hmm.. more issues... it's complex when you want to scan from top 
and from bottom simultaneously.
Anton:
19-Apr-2008
That would help my algorithm. Text which is right up against the 
edge is likely to be classified as 'junk'. When there is text at 
the top edge and text at the bottom edge only, then we have two possibly 
'content' texts. But which one is the content and which is the junk 
? The algorithm is forced to either make a choice (which it could 
do by choosing the larger one), or not choose at all (which is what 
currently happens), so including both as the 'content'. If you put 
just one line of white outside the text you consider 'content' then 
it will be surrounded by white and the algorithm will select it as 
'content'.
Anton:
20-Apr-2008
Rewritten algorithm (selects the larger now).
load-thru/update these two:
http://anton.wildit.net.au/rebol/gfx/auto-crop-bitmap-text.r
http://anton.wildit.net.au/rebol/gfx/demo-auto-crop-bitmap-text.r
And download this new test script:
http://anton.wildit.net.au/rebol/gfx/test-auto-crop-bitmap-text.r
Graham:
20-Apr-2008
if the region is blank, your scan routine returns none, and then 
the crop errors.
Anton:
21-Apr-2008
updated 
	auto-crop-bitmap-text.r
removed old code and comments (file is 3.5k smaller)
Anton:
21-Apr-2008
Hmm.. I think the image padding might be outside the responsibility 
of an auto-crop function. Its job is to remove stuff, not add. It's 
probably better to write a small generalised function to do the padding 
(which could be useful elsewhere) and just feed the result of the 
auto-crop to it.
Anton:
21-Apr-2008
I think if you're going to make an "all-in-one" function, then its 
name should reflect that. eg. 
	crop-and-pad-ready-for-ocr: func [image][
		pad-image auto-crop-bitmap-text image 1x1
	]

(where pad-image is adding a 1x1 white border around the cropped 
image.)
Anton:
21-Apr-2008
And your code redefines the meaning of 'region (which by itself is 
bad because it can cause confusion later) unnecessarily.
I could rewrite it more simply:
	all [
		region: find-bitmap-text-crop-region image
		copy/part skip image region/1 region/2
	]
but that's just equivalent to my IF above.
Graham:
21-Apr-2008
Would it be hard to write a deskewing function?  basically I guess 
one finds a best fit horizontal line for the base of the text one 
finds, and then returns the angle needed to deskew it.
Graham:
22-Apr-2008
To crop the right and left edges I think we can just rotate the image 
90 deg, crop it with the existing routines and then rotate it back 
again
Graham:
22-Apr-2008
Seems to work ... but I have to rotate 270 deg and not -90 to get 
the original orientation back.  Does effect not take a negative rotation?
Geomol:
22-Apr-2008
Seems to only do 0, 90, 180 and 270:
http://www.rebol.com/docs/view-system.html#section-9.5
Graham:
22-Apr-2008
I usually learn enough about view to do something I need and then 
promptly forget it :(
Pekr:
3-May-2008
Here's small challenge. I created following script which is surely 
full of junk. I am not good View coder :-) Now who helps me to simplify 
it and to get the movement smoother? :-)
Rebolek:
21-May-2008
The difference between random and random/secure:

img: make image! 512x512 
repeat i 512 [
	repeat j 512 [
		either i < 256 [
			if 2 = random 2 [
				img/(as-pair i - 1 j - 1): 255.255.255
			]			
		][
			if 2 = random/secure 2 [
				img/(as-pair i - 1 j - 1): 255.255.255
			]
		]
	]
]


view layout [image img across text "RANDOM" tab tab tab text "RANDOM/SECURE"]
Gregg:
21-May-2008
randomize: func [
    "Reseed the random number generator."

    /with seed "date, time, and integer values are used directly; others 
    are converted."
][

    random/seed either find [date! time! integer!] type?/word seed [seed] 
    [
        to-integer checksum/secure form any [seed now/precise]
    ]
]

img: make image! 512x512 
repeat i 512 [
	randomize
	wait .001
	repeat j 512 [
		either i < 256 [
			if 2 = random 2 [
				img/(as-pair i - 1 j - 1): 255.255.255
			]			
		][
			if 2 = random/secure 2 [
				img/(as-pair i - 1 j - 1): 255.255.255
			]
		]
	]
]


view layout [image img across text "RANDOM" tab tab tab text "RANDOM/SECURE"]
Henrik:
25-May-2008
hmm.. can't you do something with setting the caret to a large position 
and read the position that way?
Henrik:
25-May-2008
unless it returns the index of the string and not a pair.
Graham:
25-May-2008
What I am trying to do as in the video i posted on the rebgui channel 
is to open the area just enough to show all the text .. no less, 
and no more.
Henrik:
25-May-2008
the face you are using should be of quite large height or width, 
depending on what you want to size the area on. SIZE-TEXT bases the 
size of the text on the visible amount of text in the face, so if 
the face is too small, it will use the face size and not the text 
size.
james_nak:
27-May-2008
Amacleod and Graham, my apologies for the two week delay. I don't 
know where I got it either now though it was written by Didec with 
Notes: "Code abstracted from altme offline reader by Graham Chiu 
and used for this chat client". I just saw the Graham part when I 
first saw it so I thought he had written it. Of course the cool thing 
is the scrollable boxes work great.
Rebolek:
11-Jun-2008
I recently found this on my HD and as I'm not sure I've ever posted 
it somewhere, I'm posting it here. Do what you want with it.
do http://bolek.techno.cz/reb/request-color.r
Rebolek:
11-Jun-2008
Also check this small GUI experiment:
do http://bolek.techno.cz/reb/efflist-complete.r


rearange the effects using drag'n'drop, duplicate effect whit green 
"o", remove them with red "x" (that's not good idea, as you cannot 
add removed effects back) and set their values with knobs, check 
box and color-picker.
Henrik:
11-Jun-2008
if we could get that color wheel in along with the sliders and a 
storage for colors, that would be nice.
Rebolek:
11-Jun-2008
Just that the precision of picking color in the triangle is limited. 
You can test it if you try to move the picker to one of the edges 
and you will see that the sliders won't go to min/max values. There's 
some rounding involved, missing decimal pair! and of course, to be 
really precise, the color wheel should be at least 256pixels wide. 
But you can alwas finetune using sliders.
Rebolek:
11-Jun-2008
I was reading the color from the triangle but there's difference 
between calculated value and value from the gradient so now I'm calculating 
it from the cursor position. There's some comented code to show you 
the difference between both methods.
Anton:
11-Jun-2008
Very nice work, Rebolek!

Nice GUI elements used; I like the rearrangement method used in the 
list of effects, and I see you've done some nice rotate knobs.
Gregg:
18-Jun-2008
Romano and others have done resizing systems for R2. They can work 
very well, without tooooo much more effort than normal
Chris:
18-Jun-2008
I did one interface once where all sizes (components and text) were 
set relative to the layout size, though it was intended to run full-screen. 
 Not sure that's applicable...
Jaymer:
19-Jun-2008
hi.  I run View in Win XP.  My script is very simple... 

blk: load %/c/input.txt foreach url blk [if not find attempt [read 
append url "cvap"] "Nothing found"  [browse url]]
and a line in the input file is something like this:
http://website1.com/search?query=
http://website2.com/search?query=


So, I want to search for "cvap", and it appends that to the URL and 
I search the result string and if it DOES NOT say "Nothing Found", 
then I open that URL so I can visually examine it.


It works 95% of the time, but sometimes I get the following error:

** Script Error: find expected series argument of type: series port 
bitset
** Near: if not find attempt [read append url "cvap"]

Any ideas how I can fix this?
thx
james_nak:
24-Jun-2008
Brian, You da man. While I was waiting I decided to throw it into 
a panel but only use that capability when I run the app on my EEE 
PC. BTW, I tried some of the other resize code that was posted and 
it works well but not with my app and it's not that big of a deal 
to warrant hunting down why. Thanks.
Janeks:
25-Jun-2008
Hi! How to upgrade rebcmdview with newer version of Rebol?

I would like to make an app with tray icon and menu, but the original 
rebcmdview shows:
** Script Error: Invalid argument: tray
** Where: set-tray
** Near: set-modes system/ports/system compose/deep/only [
    tray: [
        add main [
            help: getTextByLang "Truck messaging"
            menu: (menu)
        ]
    ]
]

While the newer rebview works good with tray, but lacks ODBC support.
Janeks:
25-Jun-2008
Is it possible to unview console window in rebol-view?

F.ex. if I want to show some output and then close it so that program 
still continues. But it looks like better is to use some custom window 
face, so that there will be no risk, that user will close/quit accidentaly 
program by closing console win.
Janeks:
27-Jun-2008
Quite old story, I had command version and not yet knowledge about 
Softinov mySql driver, and I used it to access also MsSql
Dockimbel:
27-Jun-2008
And you had some issues with the /Command version, I guess ?
james_nak:
27-Jun-2008
While you're there Dockimbel, I've always wanted to know how one 
checks for the mysql port being open. Occasionally my apps meet with 
a closed port and die.
Janeks:
28-Jun-2008
Doc, Question about another process launching - did you mean launch 
process and comunicate with them by using some network protocol?
Geomol:
2-Jul-2008
With struct! I can get a binary representation of an IEEE float from 
a REBOL decimal. But what if I wanna go the other way? The script 
ieee.r in the Library has such a function, but can't it be done with 
just using struct! somehow? So I've got the binary representation 
of an IEEE float and want the REBOL decimal.
Maarten:
3-Jul-2008
Do you know how to handle (and compute with) 64 bit unsigned ints?
Geomol:
3-Jul-2008
Maarten, I can't think of a short-cut way to do, what you want. I 
guess, you have to do the bit-manipulation manually. struct! might 
help with something like:

unsigned: make struct! [hi [int] lo [int]] [0 0]


You can then get to high and low 4 bytes with unsigned/hi and unsigned/lo, 
and you can see all 8 bytes with: third unsigned

I made some bit operations, that might help you further: http://home.tiscali.dk/john.niclasen/libs/bit.r
Graham:
8-Jul-2008
I guess a vector drawing program is needed ... but there needs to 
be a way to select items and selectively remove them.
Graham:
8-Jul-2008
anyway, I think it's a vector drawing package with the ability to 
change elements afterwards and to attach elements to nodes
Henrik:
8-Jul-2008
hmm.. I'm still not sure where it fits or how it's used. But if we 
stick with the chart drawing aspect: It would be possible to do as 
a dialect, and I think it should be inspired by graphviz.
james_nak:
8-Jul-2008
Thanks Graham for the 3flex link. That's interesting. Perhaps Henrik's 
Relations-Engine might be something you can use. I myself have been 
tinkering around with it and attempting to parse the data to work 
with a chart making program. In my case I am planning on using http://www.maani.us/xml_charts/
.
james_nak:
14-Jul-2008
Has anyone ever seen a view app with several fields and and an area 
 that always minimizes when you hit the return key? In this case, 
I don't want it to do that. I  don't think I' ve ever seen that except 
in this app. What would make it do that?
Gregg:
14-Jul-2008
If it's a custom app, they could be grabbing the enter key and minimizing 
it. But that seems like a really bad idea, so maybe just a glitch?
Graham:
14-Jul-2008
James - those aren't time series from what I could see.  Time series 
are fed date values, and are not just equidistant points on an x 
axis labelled with dates.
Chris:
17-Jul-2008
That one was called %show.r and I think is likely available on an 
IOS server -- Developer?
Pekr:
17-Jul-2008
There are two things - the one comes from Jeff  Kreis, and is called 
presentation.r, size 11048 bytes, the other is Carl's slide show 
presenter from DevCon in France IIRC, called show07.r
Graham:
17-Jul-2008
I ran show07 on the first script from Carl and after repeatedly using 
the down arrow, it came up with a stack error near the end of the 
presentation.
Janeks:
21-Jul-2008
I am unsure is it the View problem - my app is eating system resources. 
F.ex. when it is started in task manager it shows near 10mb memory 
use, but after a working day it shows around 70mb and comtinues to 
grow up.

I checked my variables, but it does not seems for me, that some of 
them are not releasing data. But probably I am wrong.
Are there some routine/trick how to trace/debug such situation?

My applications is doing some database checks and if finding certain 
data , then sending e-mail and/or sms.
Henrik:
21-Jul-2008
There are some bugs in View that causes leaks when using networking 
and GUI events at the same time. That's only a very rough description 
of the problem. There are more accurate descriptions of this problem 
in RAMBO.
Henrik:
21-Jul-2008
I had a similar issue with a small database server GUI. It continually 
ate memory until it was at 500 MB. Then I rewrote the application 
to be /Core only and memory usage was as it should be (way below 
500 MB).
amacleod:
22-Jul-2008
I'm trying to use Antons' Scroll-panel style but I'm having some 
trouble. 
Do you "do" the script or it it more involved? 

I tried to follow his style-gallery.r script but there is a lot going 
on in there and got lost. 
I see some kind of "include.r" script. perhaps that is needed?
Janeks:
22-Jul-2008
Are there workaround the problem with view memory leaks (when using 
networking and GUI events at the same time) ?
Janeks:
23-Jul-2008
What I found was - RAMBO Ticket #3593.
Is it that case?

I have simple interfaces, that normaly is unviewed, but I have tray 
incon. And in background there is two database connections.
amacleod:
24-Jul-2008
I got scroll-panel working. I think it was some conflict with cypher's 
tree style which I was also using.
On a related topic...

Is there a way to scroll down teh panel programaticly. (ie: give 
a y axis location and have hte panel jump to that spot) like a link 
on  web page?

And since Cyper's tree widget does not work with Anton's scroll-panel, 
any other tree widget's around?
Graham:
24-Jul-2008
set the offset/y and then do a show
amacleod:
24-Jul-2008
Thanks. I played around with offset but I did not get it to work. 
Ill try again. 

Is there a way to find the offset for specific text in the panel? 
For example -so a search for a string and get back the location in 
the panel?
amacleod:
31-Jul-2008
Still working with Anton's Scroll-panel...

I found a way to "index" the text location in the scroll panel as 
I build the layout. But when I try to set the offset to a specific 
position in the scroll panel I offset the whole "face" and not a 
reposition of the scroller. 
Example- 
I set my_scroll_panel/offset/y: 200

I feel I should be setting the scroller's value but I can  not seem 
to figure out how...
amacleod:
4-Aug-2008
I got Cypher's tree widget to work with Anton's scroll-panel...sort 
of. Problem was tree widget uses cypher's scroll-panel style which 
of course works diferently from Anton's. Now I'm forced to use both 
and the tree scroll-panel does not display sliders correctly. 

I'm going to either need to find a way for the tree list to use Anton's 
scroll-panel or add the extra functionality to cypher's scroll-panel 
style...or start from scratch.
amacleod:
7-Aug-2008
New problem with Anton's scroll-panel style. 

When I select text I loose mouse scroll-wheel use and Keyboard scroll 
functionality.


Altme does not have this problem. I guess it's inherent to the style.
amacleod:
7-Aug-2008
Yes. I tried a feel/event function to trap the up event on the mouse 
and it restores my scroll functionality but I'm not able to highlight 
now!
amacleod:
7-Aug-2008
I'm able to re-focus the scroll panel within my "clip" function (to 
save the highlighted text) but if I just click in a text area or 
highlight and not save it using hte clip function I can not get scrolling 
back.
BrettH:
8-Aug-2008
I have a similar problem re: scrolling, and I've tried the suggstions 
by amacleod without success, here I've copied a modified version 
of cookbook-scroller in the hope someone can suggest a solution.Hi, 
I'm trying to write a data entry form with many fields, this form 
is longer than a typical
monitor viewing area.

Creating the form is easy, but I cannot work out how to scroll the 
whole form 'up/down'

when the user TAB's out of the last showing field bottom and display 
the 'hidden' fields.

Rebol actually does TAB to the next field and accepts data entry 
but you cannot see it
without manually moving the scroll slider.


How do I programmatically make the form 'move' up/down ? and sync 
the slider ?

 I've tried "all" the example code I can find and none seem to do 
 the trick :-)


In the attached (modified cookbook-scroller.r) program I've added 
a few fields to illustrate the

problem. My need is for rapid data entry and using the mouse is really 
not a option, The program accepts user data, user TABS to navigate 
to next field, form slides as necessary, upon last field, data is 
saved, form cleared, cursor placed at first field, data entry continues.

Thanks for any ideas.

;; ===============================
  rebol ["cookbook-scroller2.r"]
  sub-panel: layout [
        across origin 5
        style label text bold right 60
        backcolor tan
        h2 leaf "Scrolling Sub Panel" return
        label "Name:" f1: field return
        label "Email:" f2: field return
        label "Info:" f3: area wrap return
        label "Month:"
        l1: text-list data system/locale/months return
        label "Day:" s1: slider 200x20 return
        label
        button "Submit"
        button "Cancel" [quit]
    ]

    out: layout [
        across
        h3 "Panel Scrolling Example" return
        space 0
        p1: box 300x300 coal frame black
        s1: scroller 16x300 [scroll-panel-vert p1 s1]
        return
        s2: scroller 300x16 [scroll-panel-horz p1 s2]
        return
    ]

    p1/pane: sub-panel

    scroll-panel-vert: func [pnl bar][
        pnl/pane/offset/y: negate bar/data *
            (max 0 pnl/pane/size/y - pnl/size/y)
        show pnl
    ]

    scroll-panel-horz: func [pnl bar][
        pnl/pane/offset/x: negate bar/data *
            (max 0 pnl/pane/size/x - pnl/size/x)
        show pnl
    ]

    update-panel: func [pnl vbar hbar] [
        pnl/pane/offset: 0x0
        s1/data: s2/data: 0
        vbar/redrag pnl/size/y / pnl/pane/size/y
        hbar/redrag pnl/size/x / pnl/pane/size/x
        show [pnl vbar hbar]
    ]

    update-panel p1 s1 s2
    view out
;; ============
amacleod:
8-Aug-2008
You will need to know the offset value of each face you tab into. 
You will also need to detect which ace is currently focused. (Do 
not know how is is done).

If you know these two things you can set the offset and "show" the 
face to junp to that location.


Also, I do not know if all faces can be tabbed into such as your 
month list face..
30301 / 4860612345...302303[304] 305306...483484485486487