Thankyou Larry.
A quick visual inspection of ctx-viewtop did not reveal
to my eyes "service" anywhere. However, had I used:
>> foreach word first ctx-viewtop [if find to-string word "service" [print
word]]
dtm-services
show-services
== none
I would have found these two interesting words.
Anton.
> Hi Anton
>
> OK, as a public service, I will reveal one of my secret Jedi methods. :-)
>
> This one is called "Use the Source!"
>
> All of the desktop code is in ctx-viewtop which is initially a spec block
> for an object (or context). When the desktop is invoked ctx-viewtop is
> converted (if necessary) to an object. It is about 1000 lines of code.
>
> You can make yourself a cheat-sheet as follows, will work with
> either block
> or object
>
> echo %viewtop.txt
> print mold ctx-viewtop
> echo none
>
> With regard to services, look for the function show-services. You can show
> it as follows if ctx-viewtop is an object. The conversion (if necessary)
> should be done this way.
>
> if block? ctx-viewtop [ctx-viewtop: context ctx-viewtop]
>
> >> print mold get in ctx-viewtop 'show-services
>
> func [file /local path services f x][
> clear next dts-face/pane
> x: dts-face/pane/1/size/x
> path: full-path file
> if all [services: load-index path services/icons] [
> foreach icon services/icons [
> if icon/type = 'service [
> f: make-face dts-proto
> f/text: icon/name
> f/size: 200x20
> f/line-list: none
> f/action: compose/deep [
> do-file (either word? icon/item [to-lit-word
> icon/item]
> [icon/item]
> )
> (if icon/stats [reduce [icon/stats]])
> ]
> f/size/x: 4 + first size-text f
> x: x + 8
> f/offset/x: x
> x: x + f/size/x
> append dts-face/pane f
> ]
> ]
> ]
> dtm-services/pane: dts-face/pane
> dtm-services/size: dts-face/size
> dtm-services/size/x: x
> show dtm-services
> ]
>
> The line starting f/action: tells us the action that happens when we click
> the item in the services bar. In this case, it will call the function
> do-file on the argument.
>
> >> print mold get in ctx-viewtop 'do-file
>
> func [path stats /local orig][
> if none? path [exit]
> orig: path
> if word? path [
> switch path [
> goto [goto-view]
> help [help-view]
> console [halt-view]
> quit [quit]
> ]
> exit
> ]
> if email? path [emailer/to path exit]
> if not any [url? path (first path) = #"/"] [path: full-path path]
> either not read-binary path stats [
> alert reform ["Missing file:" path]
> ] [
> switch/default map-suffix to-file path [
> rebol [start path]
> text [editor path-thru path]
> image [show-image path]
> ] [
> either url? orig [browse orig] [browse path-thru path]
> ]
> ]
> ]
>
> Reading the above code and a couple of quick experiments gave me the
> information for my email below.
>
> Happy Hacking
> -Larry
>
> PS The functions INIT-DESKTOP and CONNECT-VIEW are worth study.
> > Larry,
> >
> > How did you find this out?
> > Where's the source that understands the "service" dialect?
> > In which context are the words that you can use
> > with service; goto, help and quit?
> >
> > Anton.
> >
> > > > Just add a menu item that brings up the editor to edit one
> > > > of my remote files
> >
> > > A service has to be either a word or a url/file. Make a script
> > > called edit.r
> > > with these lines
> > >
> > > REBOL []
> > > editor http://www.rebol.com ;change file/url as necessary
> > >
> > > and put in the view-root directory.
> > >
> > > Add this line to services.r
> > >
> > > service "Edit" %edit.r
> > >
> > > This will invoke the editor on the file or url specified. The line
> > >
> > > editor 'same
> > >
> > > invokes the editor with a blank document.
> > >
> > > -Larry
--
To unsubscribe from this list, please send an email to
[EMAIL PROTECTED] with "unsubscribe" in the
subject, without the quotes.