Here the source:
REBOL [
Title: "Graphical Layout Editor"
Date: 21-Jun-2000
Version: 1.0.1
File: %layed.r
Author: "Carl Sassenrath"
Purpose: {Your basic 1K REBOL graphical object layout editor.
Not many features, but a good example of how to drag
faces and show nubs.
}
Email: carl@rebol.com
Note: "Keeping the nubs on top is done on purpose."
]
read-thru/to http://www.reboltech.com/library/scripts/bay.jpg %bay.jpg
; Layout to edit:
faces: layout [
backdrop %bay.jpg 0.0.200
vh1 "Move Stuff Around"
image %bay.jpg
field
across space 0
button "Send"
button "Cancel"
]
vid-face: get-style 'face
engage-drag: func [f a e][
if find [over away] a [
f/offset: f/offset + e/offset - f/data
update-nubs f
show [f nub-face]
]
if a = 'down [
f/data: e/offset
show-nubs f
]
]
nub-face: make vid-face [
edge: make edge [color: 250.120.40 effect: 'nubs size: 4x4]
color: font: para: text: data: none
feel: make feel [
engage: func [f a e] [;intercepts target face events
if data [data/feel/engage data a e]
]
]
]
update-nubs: func [f] [
nub-face/offset: f/offset - 4x4
nub-face/size: f/size + 8x8
]
show-nubs: func [f] [
update-nubs f
nub-face/data: f
if not find f/parent-face/pane nub-face [
append f/parent-face/pane nub-face
]
show f/parent-face
]
foreach f faces/pane [f/feel/engage: :engage-drag]
view faces
No comments:
Post a Comment