View in color | License | Download script | History | Other scripts by: rvdzee |
30-Apr 15:56 UTC
[0.058] 19.775k
[0.058] 19.775k
layout-writer.rREBOL [
Title: "Layout Writer"
Date: 18-Mar-2008
Version: 0.1.1
File: %layout-writer.r
Author: "R.v.d.Zee"
Owner: "R.v.d.Zee"
Rights: "Copyright (C) R. v.d.Zee 2008"
Usage: {The script loads a layout, but not the REBOL header portion of a REBOL script.
An mp3 file or other media should be in the same directory as the script.}
Purpose: {The script was intended as a method for writing scripts. A layout may
be written in the editor and then displayed in the same script. Writers can change
the script and view the changes without leaving the editor.
Reference material may be drawn into the program, reviewed, and even copied
and pasted into the editor.}
Notes: {The background effect was generated by Pattern Generator, (Cyphre).
http://www.rebol.com/view/tools/patterns.r
The player script is an adaptation of the original by C. Sassenrath, originally presented
as an introductory script, REBOL Quick Start: Part 5 - Files, Directories, and Playing Music,
http://www.rebol.com/docs/quick-start5.html.
The shell command requires the file to be played to be in quotation marks.
This script achieves this construction with the rejoin statement.
"to-local-file" translates the Rebol file format to the operating system file format.
"clean-path" provides the full path to the file.
Using the Rebol "call" command to play the file requires that the files be in the
format of the operating system, and not the Rebol file format normally used in scripts.
There are no error controls built into this script.}
History: [
1.1.0 [18-Mar-2008 "Written"]
1.1.1 [19-Mar-2008 "add writers as global variable & if not empty? writers [writer/text: writers]"]
]
Library: [
level: 'beginner
platform: 'all
type: [demo tool how-to reference]
domain: [gui shell]
support: none
tested-under: [View 1.3.2.3.1 [Windows]]
license: none
]
]
instructions: [
{Welcome to the Rebol Layout Writer!
The "Add File list" button will add some sample script to make a layout, one that should make Rebol script writing even more enjoyable.
Write the script for your layout in editor area to the left and then click the "Load" Button. Note the example starts with an empty layout, but still has brackets, "[ ]". Ensure your layout scripts have one left bracket, or "[", at the start of the layout, and one right bracket "]", at the end of the layout. At the moment, you must remove any headers from scripts before attempting to view the layout here.
The "Reference" button will load your notes, scripts, or other text files.
Most changes made to the attributes of the faces in the editor can be viewed when the layout is reloaded.
Ctrl + C keys copies highlighted text to the clipboard.
Ctrl + X keys cuts highlighted text from the text area and copies that text to the clipboard.
Ctrl + V pastes clipboard text into the text area.
Clicking the mouse in a text area (no highlight) & then Ctrl + C copies all of the text of the area to the clipboard.
Similarly, all of the text can be cut, one click then Ctrl + X.
Windows Media Player will remember it's mode and offset when set to compact mode, placing it initially at least, where you choose to view it in this script.}
{
across
audio-list: text-list 250x150 orange navy data array 14 [
player: "C:\Program Files\Windows Media Player\wmplayer.exe"
play-file: rejoin [
{"}
to-local-file clean-path audio-list/picked/1
{"}
]
call reform [player play-file]
]}
{ return
pad 120x5
btn wheat "Find Audio Files" [
clear audio-list/data
audio-list-formats: [%.wma %.mp3 %.wav]
all-files: read %.
foreach file all-files [
if find audio-list-formats suffix? file [
append audio-list/data file
]
]
reset-face audio-list
]}
{[
audio-list/pane/pane/2/color: 86.101.130 ;track color
audio-list/sld/pane/1/color: red ;dragger color
audio-list/sld/pane/2/colors/1: ;top arrow square color
audio-list/sld/pane/3/colors/1: 17.132.205 ;bottom arrow square color
;;audio-list/pane/effect: ;can be set if color & sub-area/color are none
audio-list/color: teal ;none
audio-list/sub-area/color: purple ;olive ;none
]}
]
writers: make string! 200
top-screen: layout [
backdrop khaki + 30
across
space 0
]
bottom-screen: layout [
size 800x700
backdrop effect [
gradient 0x1 255.255.255 190.190.190 draw [
pen none
fill-pen diamond
1015x1017 0 271 128 1 5
255.255.255.222 128.128.128.168 255.255.255.138 100.136.116.180 0.255.255.220
245.222.129.141 222.184.135.191 255.150.10.180 100.136.116.195
245.222.129.131 175.155.120.141 170.170.170.174 0.48.0.165 0.128.0.133
128.0.0.216 76.26.0.224 0.0.0.188 255.80.37.133 80.108.142.208 160.180.160.168
0.128.0.180 72.72.16.137 255.255.255.130
box 0x0 800x700
pen none
fill-pen conic
70x993 0 154 154 5 1
255.80.37.136 44.80.132.174 64.64.64.196 255.255.0.167 240.240.240.139
44.80.132.163 128.128.128.178 255.255.255.202 64.64.64.144 0.48.0.181
64.64.64.136 72.72.16.150 255.80.37.196 44.80.132.197 76.26.0.196
box 0x0 800x700
]
]
origin 0x0
across
space 0
blackboard: box 760x800
return
pad 0x-330
editor-box: box 420x185 ;790
pad 5
reader-box: box 395x185
return
pad 0x5
btn wheat"Show Editor" [
;---move the boxes in & out of view - show [editor-box reader-box] is ok,
; hide editor-box & hide reader-box was not used, since the boxes did not hide together
either face/text = "Show Editor" [
editors-place: editor-box/offset
readers-place: reader-box/offset
editor-box/pane: editor
reader-box/pane: researcher
show [editor-box reader-box]
face/text: "Hide Editor"
][
editor-box/offset/y: 1000
reader-box/offset/y: 1000
show [editor-box reader-box]
face/text: "Show Editor"
editor-box/offset: editors-place
reader-box/offset: readers-place
]
]
sample-script: btn wheat 90 "Add Playlist" ivory left [
add-to-script: func [instruction button-text][
poke writer/text (length? writer/text) newline
append writer/text pick instructions instruction
append writer/text join newline "]"
show writer
writers: copy writer/text
new-script: layout load first to-block writer/text
new-script/offset: 0x0
blackboard/pane: new-script
writer/text: writers
show blackboard
face/text: button-text
show face
]
if face/text = "Colors" [
append writer/text join newline instructions/4
writers: copy writer/text
kr: to-block writer/text
new-script: layout load first kr
new-script/offset: 0x0
blackboard/pane: new-script
do form kr/2
writer/text: writers
show blackboard
face/text: "Done"
show face
]
if face/text = "Add File Button" [add-to-script 3 "Colors"]
if face/text = "Add Playlist" [add-to-script 2 "Add File Button"]
]
btn wheat "View" [
kr: load to-block writer/text
new-script: layout load first kr
new-script/offset: 0x0
blackboard/pane: new-script
do form kr/2
if not empty? writers [writer/text: writers]
show blackboard
]
btn wheat "Load Layout" [
reset-face reader
reset-face scroll-reader
read-layout: request-file
if not none? read-layout [
writer/text: read first read-layout
writers: copy writer/text
focus writer
]
]
btn wheat "Save Layout" [
layout-to-save: request-file/title/save "Save Layout" ""
if not none? layout-to-save [
save first layout-to-save to-block writer/text
]
]
btn wheat "Quit" [quit]
pad 200
btn wheat - 10 "Reference" [
web-pages: [%.html %.htm]
text-pages: [%.r %.txt]
file-to-read: request-file
if not none? file-to-read [
if find web-pages suffix? first file-to-read [browse first file-to-read]
if find text-pages suffix? first file-to-read [
reset-face reader
reset-face scroll-reader
reader/text: read first file-to-read
show reader
]
]
]
btn wheat - 10 "Save Note" [
file-name: request-file/save/title/filter "Save Note" "REBOL" "*.txt *.r"
if not none? file-name [
write first file-name reader/text
]
]
btn wheat - 10 "?" [
reset-face reader
reset-face scroll-reader
reader/text: first instructions
show reader
]
]
blackboard/pane: top-screen
top-screen/offset: 0x0
blackboard/show?: false
editor: layout [
backdrop brown + 30
origin 0x0
across
space 0
writer: area 400x185 khaki + 30 khaki + 40 wrap with [
edge/effect: none
edge/size: 1x1
edge/color: brown
] "[ ]"
scroll-writer: scroller 15x185 olive brown [scroll-para writer scroll-writer]
]
editor/offset: 0x0
researcher: layout [
backdrop brown + 30
origin 0x0
across
space 0
reader: area 350x185 khaki + 30 khaki + 40 font-color black font-size 12 wrap with [
edge/size: 1x1
edge/color: brown
] instructions/1
scroll-reader: scroller 15x185 olive brown [scroll-para reader scroll-reader]
]
researcher/offset: 0x0
view/offset bottom-screen 300x30 |