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

World: r3wp

[View] discuss view related issues

Ashley
27-Feb-2005
[465x2]
A question for those who have delved into View facets; which facets 
(apart from 'data) are *not* used by View? 'action seems to be reserved 
for the VID feel system, 'span seems to have an undefined effect 
if used. The complete list is:

	type: 'face
	offset: 0x0
	size: 100x100
	span: none
	pane: none
	text: none
	color: 200.200.200
	image: none
	effect: none
	data: none

 edge: make object! [color: 200.200.200 image: none effect: none size: 
 2x2]

 font: make object! [name: "arial" style: none size: 12 color: 0.0.0 
 offset: 2x2 space: 0x0 align: 'center valign: 'center shadow: none]

 para: make object! [origin: 2x2 margin: 2x2 indent: 0x0 tabs: 40 
 wrap?: true scroll: 0x0]

 feel: make object! [redraw: none detect: none over: none engage: 
 none]
	saved-area: none
	rate: none
	show?: true
	options: none
	parent-face: none
	old-offset: none
	old-size: none
	line-list: none
	changes: none
	face-flags: 0
	action: none


I'm trying to determine which facets I can safely use when not using 
VID.
can safely use

 should read, "can redefine for my own use (without affecting the 
 behaviour of the View face)"
DideC
28-Feb-2005
[467]
AFAIK, 'options is used only by window level face. Others are used 
by View as 'face is the View base object.

svv/vid-face is the VID default face, with more properties that you 
can used more safely.
Ashley
28-Feb-2005
[468]
Of the 25 View facets, I have been able to prove (via simple test 
cases) that 19 are used in some shape or form; which leaves 6 that 
I cannot prove are used:

	type		; view make face [type: 'blah] works just fine
	span
	data
	saved-area
	line-list
	action


For the record, passing an empty  face to 'view changes the following 
facets:

	text            string!   ""
	old-offset      pair!     0x0
	old-size        pair!     100x100
	face-flags      integer!  1


and doing a "view make face [pane: make face []]" will additionally 
set the sub-face's 'parent-face facet.

Oh for some low-level documentation!!! ;)
DideC
28-Feb-2005
[469]
'line-list is only used on "long 'text" face (more than 200 chars 
IIRC). Be carefull with it.


'span was used in View 1.2.1 to set a pixel ratio (zoom) between 
'offset, 'size and correspondng real screen values. I think recent 
beta/alpha does not care of it.

'saved-area is considered if  value is 'true IIRC.


'action is checked by 'feel function, so can be used if 'feel does 
not care of.

'data depends of  'feel too.


'type could be used. Only 'layout or other VID functions use it AFAIK
Anton
28-Feb-2005
[470]
By the way, the words in a face object are not "facets", as I fell 
into believing some time ago. Facets are a style's dialect words 
which follow the style word in the layout block. eg. layout [BUTTON 
"hello" red [print "pressed"] ]    BUTTON is the style word, the 
rest that follow are the facets. These may or may not translate nicely 
into attributes in the new face object created for this button. A 
single facet could affect several attributes inside the button face.
Robert
28-Feb-2005
[471]
How can I minimize a View window to a tray-icon only?
Anton
28-Feb-2005
[472x2]
This I grabbed in Dec 2002
Rebol [
	title: "little custom tray exapmle"
	author: [cyphre-:-seznam-:-cz]
]

set-tray: does [
set-modes system/ports/system [
	tray: [
		add main [
			help: "Just some help line"
			menu: [
				desktop: "This is my tray"
				bar
				test: "test item"
				bar
				quit: "Quit"
			]
		]
	]
]
]
system-awake: func [port /local r][
    if all [r: pick port 1 (r/1 = 'tray)] [

        if any [(r/3 = 'activate) all [(r/3 = 'menu) (r/4 = 'desktop)]][

  view/new/offset layout [banner "you clicked the tray button 1"] random 
  200x200
        ] 

        if all [(r/3 = 'menu) (r/4 = 'test)] [view/new/offset layout [banner 
        "you clicked the tray button 2"] random 200x200]
        if all [(r/3 = 'menu) (r/4 = 'quit)] [quit]
    ]
    return false
]
system/ports/system: open [scheme: 'system]
append system/ports/wait-list system/ports/system
system/ports/system/awake: :system-awake 
set-tray
wait []
Do that, then look to your system tray for the rebol icon.
Robert
28-Feb-2005
[474]
Thanks, I try it.
Ashley
28-Feb-2005
[475]
Anton, http://www.rebol.com/docs/view-guide.html#section-15seems 
to contradict you. ;)
Ashley
1-Mar-2005
[476x2]
After extensive testing, I've come to the following conclusions about 
the View facets I mentioned before:

	type		; required, but not used by View directly
	span		; required, but is depreciated / not used
	data		; used by VID styles
	saved-area	; used by View
	line-list	; used by View
	action		; used by VID feel system


So, if you create a View-only GUI I believe you can safely use / 
redefine the following four facets: type, span, data and action.
Which leads (sort of) to my next question. Does anyone think it is 
worth developing a simple, high-performance, low-memory GUI alternative 
to VID? The aim would be to have it built on View from the ground 
up such that you could (for example) use enface / rebface (or equivalent) 
without needing %view.r (and the over 120 KB of mezz it pulls in). 
If there's sufficient interest I'll document and release the Alpha 
implementation I have.
Ammon
1-Mar-2005
[478x2]
Yes!
I've built GUIs from hand and when the whole GUI is built by hand, 
I found it to be considerably faster and much lighter on the memory 
usage.
Graham
1-Mar-2005
[480]
How much does your  low footprint GUI improve on the memory usage?
Brock
1-Mar-2005
[481]
I think it is a great idea - after all - wasn't VID just something 
to get the ball rolling and show the rest of us how we 'could' do 
things?
Graham
1-Mar-2005
[482]
yeah .. except there are only a few people able to "do" things :(
BrianW
1-Mar-2005
[483]
I'm working on it, I'm working on it :-)
Brett
1-Mar-2005
[484]
That would be great Ashley.
DideC
2-Mar-2005
[485]
As Brock said, VID is an example. Carl will be interesting to see 
an alternative too ! So am I.
Anton
2-Mar-2005
[486]
Ashley, have you checked out Steel much ?
Ammon
2-Mar-2005
[487]
Uhm...  GLayout uses VID...
Anton
2-Mar-2005
[488]
Oh ok, I see.
Graham
2-Mar-2005
[489]
I thought Steel was not going to use VID though .. and Glayout was 
just a temporary and unsupported thing
Anton
2-Mar-2005
[490]
No it doesn't Ashley, read again.
Louis
2-Mar-2005
[491]
Ashley, if it is really simple, I would love to see it.  In programming 
I sometimes have to "reinvent a wheel" in order to be able to understand 
how that wheel works so that I can use it.  A simple wheel makes 
it easier for me to grasp the concept.
Robert
2-Mar-2005
[492]
Sounds like a good idea. Especially to better support data-form like 
GUIs. Together with Cyphre I have made such a dialect. We could take 
some ideas from it.
Anton
2-Mar-2005
[493]
Ashley, it's a good document, separating the View and VID attributes.
Ashley
2-Mar-2005
[494]
Graham: It's *Alpha* so no hard benchmark results yet, but moving 
from VID to View for mdViewer cut the WinXP process size from 15MB 
to 12MB and improved speed threefold ... I'd expect similiar things 
from a View-based GUI.


Anton: "No it doesn't Ashley, read again." - I thought the opening 
paragraph of the referenced document made it pretty clear; "Facets 
are attributes of a face. Facets include the face's location, size, 
color, image, font, style, paragraph format, rendering effects, behavior 
functions, and other details.", but I'll probably use the term attributes 
anyway as facets might be confused with faces.

Louis: Good documentation can make *anything* seem simple! ;)


Robert: Maybe. Main purpose of a View-GUI is for high-performance 
scripts where you really want to know what *every* face is doing.
Anton
2-Mar-2005
[495x2]
By golly, Ashley, you're right !  That's the end of my confusion. 
But it's easy to be confused - see section 6 of the same document.
(I confused "facets" with "style facets")
Ashley
2-Mar-2005
[497]
Ah, that explains it. No harm done. ;)
Anton
2-Mar-2005
[498]
sorry for doubting you :)
Ashley
2-Mar-2005
[499x2]
RebGUI (alpha) and draft documentation available at http://www.dobeash.com/it/rebgui/


Only a few basic widgets defined at this stage, so don't try and 
convert your VID layouts across just yet! ;)


Being an alpha, the design is still settling down so feel free to 
question anything that seems wrong. If there's sufficient traffic, 
feel free to start a RebGUI group.
Or just grab the source (and run %test.r) directly from http://www.dobeash.com/files/RebGUI-010.zip
Anton
2-Mar-2005
[501x7]
Ashley, since you have separated the View and VID facets, does this 
mean that RebGUI can work closely with VID, without the two affecting 
each other ? Eg. could faces from a VID LAYOUT be moved into a RebGUI 
DISPLAYed layout, et vice versa ?
Nice demo. It works straight away after unpacking.
I wonder why you impose a minimum window size. Why should the user 
not be able to shrink the window if it is desired ? Shrinking the 
window may hide some of the (less flexible) widgets, but also reveal 
content of other windows behind this one.
It was not immediately clear to me, from the DISPLAY help, whether 
ORIGIN-SIZE was referring to the window offset or the initial layout 
position within the window. Compare to LAYOUT/ORIGIN.  Actually I 
was probably confused because I was expecting something similar to 
VIEW/OFFSET...
Nice web page, by the way.
In http://www.dobeash.com/it/rebgui/facets/for the CHANGES facet, 
you can add OFFSET to the list of flags (this is how you can take 
advantage of hardware scrolling, if supported).
A suggestion for PROGRESS style, it can be implemented nicely without 
using a subface, using only the effect block to draw the bar. (I 
have made such a style, in order to make it iterateable in a list).
Vincent
2-Mar-2005
[508]
for the CHANGES facet, there is the TEXT flag too. It's for changing 
a window title without unview-ing the window. ie (from %analog-clock.r):
l/text: mold now/time 
l/changes: 'text 
show l
shadwolf
2-Mar-2005
[509x4]
how can I refresh a layout while i'm resizing it ?
can I insert a show in it ?
actually when I resize a layout by clicking left mous button and 
pointing to one of it's borders I have an ugly thing
how can I do to insert a refresh action while the border of the layout 
are deplaced
Vincent
2-Mar-2005
[513]
you can do it at 'resize event, but i don't think you can do it during 
the resizing
shadwolf
2-Mar-2005
[514]
Vincent I yet do it on resize event completion but it's during the 
completion of the resize event I need to have the refreshing to polish 
the UI eatch time the mouse pointeur is moved ..