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

World: r3wp

[!REBOL3 GUI]

Anton
19-Nov-2010
[4268]
My take on focusing: I think ultimately only each individual style 
can know how best to represent its focus. Obviously consistency among 
the styles is a desirable quality, and to encourage that, the system 
should provide some functionality which each style can opt to use, 
to derive its focus functionality from, or not to use at all. That 
choice depends on the style, obviously.

I don't think it's a good idea to be too rigid and require all styles 
to use a single focus rendering functionality. That's just being 
short-sighted, presuming to know how all possible styles will be 
written, and will cause problems.
Henrik
19-Nov-2010
[4269]
I would probably agree, if I didn't have other experience with the 
VID Extension Kit. The trick is to make the focusing mechanism flexible 
enough to handle all situations. We are not building a GUI that handles 
specialized situations. We are building a GUI for large business 
applications with dozens of windows, hundreds of widgets and tons 
of forms. We absolutely do not want to have something like focusing 
being a special case per style as other than a special option.
Rebolek
19-Nov-2010
[4270]
More and more I think that visual representation of focus should 
be handled by style in on-focus actor with some help by system like 
providing default system-wide focus-color etc.
Henrik
19-Nov-2010
[4271x2]
Rebolek, it means the focusing mechanism per style changes with the 
skin.
I don't mind an on-focus handling, but there should really be a standard 
method.
Rebolek
19-Nov-2010
[4273]
The problem with standard method is that you're trying to force one 
visual method on all style and it may look wrong with some (irregural) 
styles.
Henrik
19-Nov-2010
[4274]
I don't think we will have that many irregular styles. Besides, each 
style will have a click mask, which could be used for drawing up 
an irregular focus ring. The only problem is to draw the focus ring 
inherently as a part of the face, and not as a layer on top of all 
faces, otherwise there would be problems with partially or fully 
covered faces in, say, scroll-panels.


Also, having differently appearing focus rings per style will be 
confusing to end-users, if the style designer can decide his own 
look for focusing.
Rebolek
19-Nov-2010
[4275x2]
If the style designer wants to make confusing widgets, there's nothing 
we can do about it other than providing some style guide lines.
Anyway, right now I prefer to do this in style's on-focus actor. 
After few more styles are done we can check for repeating patterns 
and try to make it more general.
Henrik
19-Nov-2010
[4277]
The patterns will be repeating for a good size of already existing 
styles, such as fields, buttons, so I don't agree with the current 
approach. It will also take longer to create the skin, when we get 
to that point.
Rebolek
19-Nov-2010
[4278]
I don't agree. We don't have some good model for this right now. 
Before we have some good design of visual representation of focusing 
in our current box-model, then we can make it system-wide. But right 
now it's too soon.
Henrik
19-Nov-2010
[4279]
We don't have some good model for this right now.

 - We have the VID Extension Kit. It's been doing focusing centrally 
 for two years now and it works quite well, sans some well-defined 
 problems, which we have a good chance of fixing for R3.
Oldes
19-Nov-2010
[4280x2]
I'm far from the GUI project, but I guess that the best would be 
centralized default focusing with possible per style extensions (using 
style's own focusing if required). Style should provide some required 
info of course.
My opinion above is for special focusing-- like using tab to cycle 
thru gui items (like buttons).
Rebolek
19-Nov-2010
[4282x2]
Yes, that's the goal.
I'm not against central processing in draw-face. I'm just right now 
not sure what's the best way in our current box model. I need to 
do more tests before implementing this so I don't have to rewrite 
it later because of bad design.
Henrik
19-Nov-2010
[4284]
Ok, that will do. We just don't want to end up in a situation where 
a central mechanism for rendering the focus ring becomes impossible 
to do. we will have a similar situation with help bubbles. Perhaps 
it's best to have a general mechanism for generating a gob near any 
face. We can use that in the help system as well.
Rebolek
19-Nov-2010
[4285x2]
We have that mechanism.
It's used for tooltips.
Henrik
19-Nov-2010
[4287]
Then, at least initially, is it very difficult to render a gob with 
a colored 1-2 pixel edge and simply have it rendered with the same 
dimensions as the focal-face? Later, a more sophisticated drawing 
mechanism could be used.
Rebolek
19-Nov-2010
[4288]
It will need some changes to event handler to ignore the highlight 
gob, but it's possible solution.
Henrik
19-Nov-2010
[4289]
if you do that, you're 80% done. that leaves a few problems to solve, 
but that can be done down the road.
Oldes
19-Nov-2010
[4290]
To have event transparent gobs is on my wish list for a very long 
time already.
Henrik
19-Nov-2010
[4291]
I thought actually they were event transparent and the face concept 
was the part that dealt with events, but oh, well.
Rebolek
19-Nov-2010
[4292]
Face makes gob event transparent (can pass event to other face/gob).
ssolie
19-Nov-2010
[4293]
Are there any GUI tests available that will demonstrate all the various 
GUI features available in R3?


I'd like to know how complete my GUI port is for Amiga so I was hoping 
there was some benchmark to work towards. I imagine all the platforms 
will need such a test in the future to guarantee a certain level 
of basic functionality across all platforms.
Rebolek
19-Nov-2010
[4294]
There's style browser that's for testing styles, but you probably 
wait when Henrik builds new version of r3 gui.
Henrik
19-Nov-2010
[4295]
the style-browser I have is a bit old, but it should work. There's 
a link earlier in the group.
Rebolek
19-Nov-2010
[4296]
It may be good idea to build new one. Keyboard navigation improved 
a lot and can be good for testing key events.
Henrik
19-Nov-2010
[4297x2]
ok, I'll try to build with A109 to circumvent the build problem.
http://94.145.78.91/files/r3/gui/style-browser.r3
http://94.145.78.91/files/r3/gui/r3-gui.r3

Both style browser and GUI updated.
ssolie
20-Nov-2010
[4299]
Just tried to run the style-browser.r3 on Amiga and hit the following 
problem
>> do %r3-gui.r3

Script: "Untitled" Version: none Date: none

>> do %style-browser.r3

 Script: "R3 GUI Style Browser" Version: $Id: style-browser.r3 1179 
 2010-11-19 18:11:46Z Rebolek $ Date: none
** Script error: cannot 
 MAKE/TO image! from: make gob! [offset: 0x0 size: 400x300 alpha: 
 0 draw: [clip 0x0 400x300 anti-alias false pen false fill-pen 192.192.192 
 box 1x1 399x299 0 fill-pen false pen 64.64.64 line-cap square line-width 
 1.0 variable line [0x0.5 399x0.5] line-cap square line-width 1.0 
 variable line [0.5x0 0.5x299] line-cap square line-width 1.0 variable 
 line [0x299.5 399x299.5] line-cap square line-width 1.0 variable 
 line [399.5x0 399.5x299] clip 6x6 394x294 translate 6x6 line-width 
 1.0 variable pen 255.255.255 fill-pen false anti-alias true clip 
 0x0 0x0 pen false line-width 0.0 variable grad-pen linear normal 
 1x1 0x2...

Any ideas?
Kaj
20-Nov-2010
[4300]
The script properties look corrupt
Henrik
21-Nov-2010
[4301]
ssolie, if you instead of running the style browser try:

view [button]

Do you get a window with a button?
Pekr
21-Nov-2010
[4302x3]
to the focus discussion. I don't know why, but I agree with Rebolek 
this time :-) I know that I am fan of concepts, and subsystems. IIRC 
VID2 used something like abstracted feel storage. Maybe it was initially 
a good idea, but how often were 'feel objects actually reused? This 
was imo an example of a concept, which did not live to its expectations.


I know that R3 GUI is abstracted in better way. But I also feel, 
that we more clearly kind of encapsulated styles - they have all 
those on-* actors, which let the style to react to various events 
in its own way.

So - stating above - are we really sure that:


1) having abstracted all-styles-related visual representation of 
focusing brings us an advantage? One advantage might be, that if 
it is not central, lazy style coder might not implement visual focus 
representation, and then half of styles might miss it, or we might 
face some weird situations, when the style author implements the 
visual focus representation a different visual way.


2) are we sure that one central system will work for e.g. for some 
complex styles, where some special tricks might be needed to display 
focus visual representation correctly?
Henrik, Ssolie - beware - I just got the samy error with A107
I would try to build A110, but I am not able to get sources from 
Carl's git. I tried to download his .zip archive, changed to TO_WIN32 
in the .h config file, but it does not build - probably a linux distro 
...
Henrik
21-Nov-2010
[4305]
Whenever you are creating a concept in a GUI, such as keyboard navigation 
and focusing, you immediately want to centralize it with the option 
of per-style overrides. This is the illusion of control in that you 
want to meddle, when in fact, you are moving toward a lack of control 
a lack of unification and opening up all sorts of opportunities for 
bugs.


It is *much harder* to develop large applications, when concepts 
are not centralized, in the same way if you don't have a single mechanism 
for help bubbles, for determining which button is default, have a 
single, unified resizing system (hello, RebGUI), have a standard 
method for exiting windows, have a standard method for creating and 
displaying any number of dialogs (hello, VID), have a standard method 
for validating forms, have a standard method for reading and writing 
face properties (hello again, RebGUI).


With all these things properly in place, GUI development is reduced 
from weeks to hours.


Of course the other method of thinking may prevail, if you have never 
coded a large GUI before, and therefore don't consider the testing 
process, which can take *weeks* and *costs money*, because you have 
to test every single implementation (N number of implementations) 
of the concept that would otherwise be done in a central system (1 
implementation). It's really the testing that constantly is underestimated.


One can only determine that something cannot be centralized if it 
will create too much code, compared to a per-style solution, but 
it will in general always cause the GUI developer to create functioning 
and *bug free* layouts with much less work.


In that same thinking, R2 View centralizes the generation of a face 
image gradient, background, text display and edge appearance. It's 
not flexible, but it makes it darned simple to skin and generally 
does not have bugs.


And you FEEL object question: Yes, they are reused a lot, otherwise 
VID would probably be 100 kb bigger.
Rebolek
21-Nov-2010
[4306x2]
I don't know why, but I agree with Rebolek this time :-)

 - sounds like it's unusual. I though we're in agreement most of the 
 time :)
btw, when implementing focus, I found that about 50% of styles are 
irreguraly shaped and therefore need focus-draw support on style 
level.
Pekr
21-Nov-2010
[4308x2]
Henrik - I can understand - but I also am aware of other possible 
aspects, and you can see that in Rebolek's comment: "I found that 
about 50% of styles are irreguraly shaped and therefore need focus-draw 
support on style level.". Maybe the solution is centralised (abstracted) 
system with per-style possible override?
what about new gui not working with A107? Is there A110 exe somewhere? 
I was able to get it built using Carl's git, but I somehow can't 
sync it now ....
Henrik
21-Nov-2010
[4310]
Pekr, and all I'm saying is that the irreguarly shaped styles drawing 
can be solved with access to the face click mask, that either is 
or hopefully will be implemented by Cyphre. Therefore I find it pointless 
to work on a per-style solution.
Rebolek
21-Nov-2010
[4311]
I'd like to differnitate two things - focus "subsystem"  - that's 
already implemented at R3GUI level and actual focus draw - that's 
better to be solved at style level but the system may provide general 
focus mechanism for retrangular shapes.
Henrik
21-Nov-2010
[4312]
A110:

http://94.145.78.91/files/r3/gui/r3.exe
http://94.145.78.91/files/r3/gui/r3lib.dll
Pekr
21-Nov-2010
[4313]
thanks ..
Rebolek
21-Nov-2010
[4314]
Henrik, the per-style solution are two or three lines in draw block 
and one line in on-focus that changes color, that's all (and that 
on-focus is same for all button based styles).
Henrik
21-Nov-2010
[4315x2]
that's all

 - and then you have to change it per new style and every time you 
 change a box rounding, etc.
and for cases where you use a highly irregular bitmap, you will have 
to use some kind of mask anyway.
Rebolek
21-Nov-2010
[4317]
Actually, when it's in-style, you do not have to take care of box 
model - that's problem only with universal solution.