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

World: r3wp

[!REBOL3 GUI]

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.
Henrik
21-Nov-2010
[4318]
does it currently fallback to a simple frame, if no highlight option 
is available?
Rebolek
21-Nov-2010
[4319x2]
I'm still just talking about visual representation of focus, nothing 
else. Catching focus should definitely be done on system level, I 
agree.
does it currently fallback to a simple frame

 - It should, but border seems problematic somehow. I'm working on 
 the gob mask, you were talking about, it's just not finished yet.
Henrik
21-Nov-2010
[4321]
Simple frame: OK.

Catching focus, yes, we agree.


Visual: I still think the visual representation could be done automatically. 
The ancient Deluxe Paint III on my old Amiga could do the same with 
brushes, in that it would draw a single-pixel wide line around the 
bitmap. Do that a few times with fading colors and you have the look. 
If they could do that 20 years ago on a simple 68k machine, we surely 
can do the same today in REBOL3, if we have the clickmask and perform 
a simple blur on it.
Rebolek
21-Nov-2010
[4322]
Ah, ok I understand the mechanism you've got in mind. But implementing 
this would take more time than I spent implementing focus in-styles. 
But this would be nice to have, I agree.
Pekr
21-Nov-2010
[4323x2]
a small glitch with style browser - I do mouse over of preview tab, 
it crashes. In console I do unview none, but consecutive start of 
style browser fails. Ditto when I try to re-do r3-gui.r3
mouse wheel scrolling works only upon the scroller of list. It should 
imo work even when upon the list itself ....
Rebolek
21-Nov-2010
[4325x2]
Mouse over on tab-button opens tooltip with preview that's done using 
to image! I saw some problem ssolie had here some time sooner and 
to image! was in the error description. I wonder if you've got latest 
R3, I had preview disabled in previous versions because to image! 
was causing crashes.
mouse wheel scrolling works only upon the scroller of list
 - bug, I'll fix it.
Pekr
21-Nov-2010
[4327]
This is what I get for mouse-over upon the preview tab - it displays 
the preview and crashes with:

** Script error: tooltip: needs a value

** Where: either if function! all do-style either if either do-event 
do-event ei

ther -apply- wake-up loop -apply- wait do-events catch either either 
-apply- do
** Near: either arg [
    buttons: compound-face? face
    tab-box: c...
Rebolek
21-Nov-2010
[4328]
Pekr, if you've got some time to help, please, have a look at keyboard 
nav and post any problem you find to me personally to not polute 
this channel. This will help very much.