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

World: r3wp

[View] discuss view related issues

Henrik
11-Jul-2009
[9030]
nope... no good. reverted to different strategy. it gives more overhead, 
but it will have to do.
Anton
11-Jul-2009
[9031]
Henrik, what strategy are you using?

I was thinking you could redefine layout, since you have collected 
a fair few GUI functions and styles together. When it comes down 
to it, it layout doesn't do what you want, redefine it. (And I am 
guilty of not doing this for so many years too.)
Henrik
11-Jul-2009
[9032]
Anton, I've not had the energy to take a look at what can be changed 
with LAYOUT, so what I do is try to stay within reasonable limits 
of what it can do and stay away from radical changes.


One thing to change, if it were, would be that INIT would be less 
limited, if it was run as a separate pass after initial layout instead 
of right when the face is created, but this may cause problems for 
styles that use INIT to alter the size and offset for the face, as 
well as produce subfaces that need to be initialized first. Also 
LAYOUT is not recursive and INIT may be run at very different times. 
At this time, INIT is limited, but you have a pretty good idea of 
when it's run.


In VID3.4 this is not a problem, since there is both an init and 
post-init action possible, so if I were to get rid of this problem 
in the right way, I might end up rewriting over 100 kb of well-functioning 
code.
Anton
12-Jul-2009
[9033x2]
Hmm.. well why not add a post-init to layout ? This would not affect 
any existing code, so you could migrate to it at your leisure.
(Why don't I add it myself ? Well, I might just do that.)
Henrik
12-Jul-2009
[9035]
well why not add a post-init to layout

 you can't add it to layout. it has to be done after all layout is 
 done.
Anton
12-Jul-2009
[9036]
Ah.. I'll have to think about that.
Maxim
15-Jul-2009
[9037]
amacleod: unfortunately life has been throwing fast balls at me for 
the last several weeks ... things like recurring water problems on 
my home, making all of my life really complicated and time consuming. 
 

I also tried something with remark which hasn't lead to useable code 
yet... so I am about backtrack to earlier versions and use that while 
I work on the next generation stuff.  


the next gen stuff is closer to Research than Development than I 
had predicted.  I thought it was much easier to leverage the technology 
within the web site/page cycle... but efficiency and elegence principles 
(in form and function) are hard to get right when merging persistent 
and volatile systems.
amacleod
15-Jul-2009
[9038]
That seems to be the way of software dev..


I've been two weeks away from release of my project for about 5 months 
now...
Anton
25-Jul-2009
[9039]
I got this working this last night. Modeled somewhat on Openoffice 
Writer / Insert Special Character dialog.
do http://anton.wildit.net.au/rebol/util/character-map.r
Henrik
25-Jul-2009
[9040]
Pretty good. :-)
Graham
26-Jul-2009
[9041]
Has anyone written a tree based object browser ?  Anamonitor is the 
only object browser I know of ...
Henrik
26-Jul-2009
[9042x2]
I was actually thinking about writing an object browser, but not 
directly a tree-based one.
is there a way around having to focus a face in order to use the 
scroll wheel above it?
Anton
26-Jul-2009
[9044x5]
Graham, a generic object browser should not be limited to hierarchic 
tree structure. Will you have any circular references?
Henrik, scroll-wheel: yes there is. See my scroll-wheel-handler:

do http://anton.wildit.net.au/rebol/gui/demo-scroll-wheel-handler.r
Basically, I make an event handling function, called 'scroll-wheel-handler, 
open a window, then

	insert-event-func :scroll-wheel-handler
	do-events
	remove-event-func :scroll-wheel-handler
The event handler captures scroll-wheel events, looks where the mouse 
is, finds the face which it is over (a recursive function), determines 
if it is scrollable, and sends the scroll-wheel events to the that 
face's engage, just as if it had been focused.
(Complicated, huh? But I'm proud.)
Henrik
26-Jul-2009
[9049]
Thanks
Gregg
26-Jul-2009
[9050]
Graham, I worked on one a long time ago, with Ammon Johnson. We did 
it like Smalltalk, or the OS X Finder, rather than a tree.
Graham
26-Jul-2009
[9051x3]
Gregg .. was it ever published?
Anton .. no circular references
Basically these are XML files that are being turned into Rebol objects 
that I wish to browse.
Gregg
26-Jul-2009
[9054]
I think we put it out on one of the IOS servers, Developer maybe, 
but not sure where else.  

I can dust it off and send it to you if you want.
Graham
26-Jul-2009
[9055]
Sure ... or post it to rebol.org ?
Anton
27-Jul-2009
[9056x2]
I made something quite similar recently; an expanding/collapsing 
dir-tree viewer, like the dir panel of a file browser. Each directory/file 
has to be an object, because I store some state along with it, like 
collapsed/expanded, and other interesting attributes can be stored 
in there in future, when I get around to collecting the info. The 
purpose of the app is basically to create an image of a directory 
structure, which can be saved to disk, viewed magnified etc. to give 
an overview of directory structure.
I'll clean it up to publish later.
Graham
27-Jul-2009
[9058]
So, you modify the object you're viewing to keep states?
Anton
27-Jul-2009
[9059x6]
No, as I scan the filesystem, I build the dir/file structure and 
an "associated info" object alongside each one, so it looks like 
this:


 dir-attrs: context [...]  ; <-- All associated directory info goes 
 here.

 file-attrs: context [...] ; <-- All associated file info goes here.
	file-structure: [
		(make dir-attrs [...]) %subdir/ [
			(make file-attrs [...]) %bfile
			(make file-attrs [...]) %cfile
		]
		(make file-attrs [...]) %afile
	]
So we can see the top level has one subdirectory and one file, and 
the subdirectory contains two more files.
I store info in the dir-attrs and file-attrs objects like collapse/expanded.
Actually, I think the real answer to your question is "yes", because 
I build a block/object structure, and I modify parts of it (the objects) 
to manage my additional states.
I think what you have in your situation, with objects built from 
XML, is different than mine. I take advantage of being able to use 
blocks in my structure which allows me to insert my additional associated 
info. With your object hierarchy, it's problematic to add your own 
extra fields for state because the XML, of course, might already 
have those field names as part of its data, so there's possibility 
for collision there.

However, (as I see in my notes,) I was strongly considering for my 
purposes a structure like this:
		file-structure: [
			%OHS/ [
				%adir/ [
				]
				%afile
			]
		]
		associated-file-info: [
			%OHS/ make object! [...]
			%OHS/adir/ make object! [...]
			%OHS/afile make object! [...]
		]
(with duplication of all the paths as a negative consequence), but 
this idea could work better with XML objects.
Henrik
27-Jul-2009
[9065]
Anton, have you studied what POP-DETECT in SYSTEM/VIEW/WAKE-EVENT 
is about? The function for it exists in SYSTEM/VIEW/POP-FACE/FEEL. 
To me it looks like a workaround to get DETECT to work in INFORMs.
Henrik
29-Jul-2009
[9066]
Maybe I've had too little coffee, but I can't figure out why no text 
is displayed here:

view center-face make face [text: "test"]

but 'size-text returns 22x15
Gabriele
29-Jul-2009
[9067]
the top level face is the window face. text is for the window title.
Henrik
29-Jul-2009
[9068]
ah, that's right. I wonder then if that's what is causing problems 
with SIZE-TEXT for a specific face I'm making. SIZE-TEXT consistently 
returns pixel sizes that only fit if the font size is around 10 or 
11.
Henrik
2-Aug-2009
[9069]
where exactly are iterated faces evaluated? is that internal in view?
Dockimbel
2-Aug-2009
[9070]
AFAIK, it's internal in View.
Henrik
2-Aug-2009
[9071]
Thanks
Henrik
3-Aug-2009
[9072]
When reading through the View Reference, it's not clear what happens, 
when you return an integer from the iteration function. I can see 
the iteration function is run again with that value as input, but 
I can't tell where it's run. I had hoped to redraw single lines in 
a list with a simple mouse over, but I guess you need to do something 
unknown to provoke the redraw.
Using SHOW in the function causes an infinite loop.
Anton
4-Aug-2009
[9073x2]
The answer to all these kinds of questions/problems with iterated 
pane functions, I, and beforehand others like Romano and Gabriele, 
discovered, after much investigation, is not to use a pane function 
at all, but instead, make real faces in your window and manage them 
yourself. It turns out to be simpler and easier to code, and with 
events, it is more powerful, reliable and has fewer limitations etc.
So... the pane function may be interesting to investigate, but you 
may also just waste a lot of your time.
Henrik
4-Aug-2009
[9075x2]
Anton, yeah, I might drop it, although I figured out a solution to 
that problem there are many other problems. However right now I'm 
investigating SHOW-POPUP and HIDE-POPUP, trying to see if I can control 
many popups for a menu system.
trying to figure out now when exactly it is that View displays a 
button for the window in the task bar and when it doesn't.
BenBran
5-Aug-2009
[9077]
I purchased the Rebol-Command and am trying to integrate it with 
my existing work.  The 'Local' folder is pointing to 'c:\documents 
and settings\blah\blah....   My old version was pointing to c:\rebol\local 
 thats where I want it to point.  Is there a way to force it there? 
 TIA
Anton
5-Aug-2009
[9078]
Analyse:
Put this in your  user.r  file:

	print ["system/options/home:" mold system/options/home]

A probable fix for you (insert into user.r):

	system/options/home: %/c/rebol/
BenBran
5-Aug-2009
[9079]
Thank you.  After a rest and some more digging I found a few ways 
to fix.  The most obvious - which I overlooked - was a prompt during 
the installation.   I like everything in one root folder.  Much easier 
to sync between home/work/laptop etc.  Just to be extra safe, I added 
the code you proposed.  Thanks again.