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

World: r3wp

[View] discuss view related issues

Izkata
3-Aug-2005
[2031]
Searched around in Notepad (write %System.txt mold system) to find 
this:

>> skip find mold system {RebOSFiles} -30
== {  view-root: %/c/Izkata/Rebol/RebOSFiles/
        pop: unset
        screen-face: unset
        save-user: func [
            "...
>> ? view-root		;Thar ye go  =^)
VIEW-ROOT is a file of value: %/c/Izkata/Rebol/RebOSFiles/
Ingo
3-Aug-2005
[2032]
Thanks Izkata,

seems today is the day of "learn to do it yourself" ... ;-)
Interesting how much you can find, if you remember how to do it.
DideC
3-Aug-2005
[2033x6]
Is this a bug?
view layout [
	btn "Press me" [
		show-popup layout [btn "Close" [hide-popup]]
	]
]
While you close the popup, event loop ends.
It give same result uner 1.2.48 and 1.3.1
uner=under
OK, bug or not, it works with 'inform instead of 'show-popup.
Gabriele
3-Aug-2005
[2039]
if you use show-popup then you need your do-events. see inform. :)
Robert
5-Aug-2005
[2040]
I have a iterated face that draws some text at different x-offset 
postions. Than the user can change some things and text will be drawn 
at other x-offset postions. The problem is, that the text drawn first 
is still there. The face isn't cleared... how can I do this with 
iterated faces?
Anton
5-Aug-2005
[2041]
Using Draw dialect or face/text ?
Robert
5-Aug-2005
[2042]
face/text
Anton
5-Aug-2005
[2043x2]
Showing the face does not update the display as expected. Hmm.. Show 
us the code ?
Just the iterated face definition.
Robert
5-Aug-2005
[2045]
update-calendar-weeks: func [face index /local tmp-face][
	either integer? index
		[
			if index <= length? cw-positions/(face/month) [
				tmp-face: calendar-week-faces/(face/month)
				tmp-face/offset/x: cw-positions/(face/month)/:index/x
				tmp-face/text: cw-positions/(face/month)/:index/y

				return tmp-face
			]
		]
		[
			return face/month
		]
]
Anton
5-Aug-2005
[2046x5]
I'll look at this code, but I just hacked a demo which might be interesting 
for you:
view center-face layout [
	size 600x400
	list-face: face with [
		size: 500x300
		color: 170.165.160
		init: []
		data: ["hello" "there" "Robert"]
		spacing: 1x1
		ioffset: 0x0
		subface: make face [size: 100x24 effect: [merge luma 20]]
		pane: func [face id /local index][
			if pair? id [

    return 1 + first id - ioffset / any [all [subface subface/size + 
    spacing] 1] ; convert offset to row number
			]
			; id is subface ("row") number (an integer)

   ; update subface to the correct offset, call subfunc for each pane 
   of subface
			if subface [

    subface/offset: subface/old-offset: id - 1 * (subface/size + spacing) 
    * 1x0 + ioffset ; spread horiontally into columns

				if subface/offset/x > size/x [return none]


    if subface/show?: all [data id <= length? data][ ; <- this will need 
    to be improved when scrolling added

					index: 0
					if object? subface [
						subfunc subface id index: index + 1
					]

					subface ; return subface so it is shown by the view engine
				]
			]
		]

  subfunc: func [face [object!] id [integer!] "row" index [integer!] 
  "column" /local val][
			;face/text: ""
			;face/data: none
			if all [
				data 
				val: data/:id ; "row"
			][
				face/text: val ; "column"
			]
		]
	]
	btn "change data" [
		list-face/data: random list-face/data
		show list-face
	]
	btn "change x offsets" [
		list-face/spacing: random 40x0
		show list-face
	]
]
I think your above function is a SUPPLY function, isn't it ?
My demo is programming the pane function directly.
Robert, would need to see more code. Nothing is jumping out at me 
yet. Have to go to sleep now, so perhaps tomorrow.
Robert
5-Aug-2005
[2051]
It's just a simple iterated face-function is described by Carl in 
his blog and view-doc.
Volker
5-Aug-2005
[2052]
show the parent-face
Robert
5-Aug-2005
[2053]
Will try this.
Izkata
5-Aug-2005
[2054x3]
Can anyone help me with what's going on here?
view layout [box 50x100 effect [arrow red] origin box 50x100 effect 
[arrow red rotate 270]]
I can't see why it's rotating the way it is - what I want is an arrow 
pointing left stretched vertically
DideC
5-Aug-2005
[2057]
view layout [box 50x100 effect [arrow red] origin box 50x100 effect 
[arrow blue rotate 270
fit]]
Izkata
5-Aug-2005
[2058x3]
ah
It's making the arrow before rotating, then -not- resizing it?
Alright thanx!  ^.^
DideC
5-Aug-2005
[2061]
de nada
Izkata
5-Aug-2005
[2062]
~Hides~

(School starts on the 24th, and I'm seriously thinking about dropping 
4th year Spanish)
Robert
6-Aug-2005
[2063]
view problem: showing the parent-face doesn't work because that's 
the whole window. The thing is, if the first draw is done and I than 
click into the box that has the iterated function attached, the text 
is shown.
Volker
6-Aug-2005
[2064x4]
Not sure i understand. but another try:  the list uses the first 
face returned, even if you return another one later. "tmp-face: calendar-week-faces/(face/month)" 
if this returns different faces, the first face would be reused forever. 
if thats the "The problem is, that the text drawn first is still 
there.", yes, it would be.
so the "display-face" has to be the same all the time. means, either 
copy your data in it, as you do within a supply-block. Or put your 
face in display-face/pane.
Should be mentioned in docu.
hmm, the new object-set/get may be used here. 
  set display-face get calendar-face
:)
Robert
6-Aug-2005
[2068x2]
I further investigated the problem. First I use three different boxes, 
that use the same iteration function. The iteration function uses 
different proxy faces. So, each box uses its own proxy face.
The thing is that I have a pane that's 200x20 in size. Within these 
200 pixels, I'm positioning 5 faces that have a with of 30 each. 
So there are areas where my function doesn't return a face for. And 
these areas are not cleared by View. So if I hit the older text, 
it's overwritten, if not it stays there.


The problem is, that the box, where the iteration function is used, 
isn't cleared before doing a refresh.
DideC
6-Aug-2005
[2070]
I think you must display iterated face in the whole box area, but 
you set the text and color of some of them to clear "what was here 
before".
Anton
6-Aug-2005
[2071]
I think it is strange that you are iterating different faces. That 
seems to defeat the purpose of iterating to start with. You should 
iterate one face. It is a single face which changes its position, 
shape and contents rapidly when it is asked for. You have to ensure 
that the face always has the correct information when it is asked 
for. But anyway, we can't make good suggestions unless we see a more 
complete demo that we can run.
Robert
6-Aug-2005
[2072x3]
Hmm... the thing is that the faces must have different positions. 
So it's not distributed evenly. The apps is this:

I have day numbers 1-30/31 from left to right. And now at each Monday 
position, I want to draw the week-number. So x-positions shift.
different face: It's just three month side by side. So forget it. 
The problem applies to one month.
and each month has it's own iteration face.
Anton
6-Aug-2005
[2075x4]
You are using a single iteration function to manage three faces. 
Hmm... I hesitate to say it can't be done, but maybe it isn't recommended... 
unless I misunderstand it.
The problem looks like it is that you are only updating one of the 
faces and returning it per call of the function. So any faces which 
weren't updated stay where they were.
So is the month very wide (1 - 30/31 days) or do they wrap at every 
week ? ie. are you trying to make an iterated version of my calendar-month 
widget ?
ie. 
	1 2 3 4 5 6 7 8 9 10 11 .... 
or
	1 2 3 4 5 6 7
	8 9 ...
Perhaps you can draw and show us a picture of it ?
DideC
6-Aug-2005
[2079x2]
I think you need 2 main faces:
- A normal iterated face for days.

- A classic face with 5 subfaces to display week. You just have to 
change offset, size and text according the monday location.
The problem is that iterated face are not designed to display things 
of differents size or offsets.

Iterated face works fine with linear offset changes that give always 
the same result.