View in color | License | Download script | History | Other scripts by: u1arie |
30-Apr 14:29 UTC
[0.056] 12.405k
[0.056] 12.405k
qklaunch.rREBOL [
file: %qklaunch.r
date: 2007-06-06
title: "QkLaunch - Quick Program Launcher"
author: "Arie van Wingerden"
purpose: "Easily launch programs from folder structure acting as a menu."
description: {To appreciate this program, setup a folder (directory) structure
which resembles the menu structure you like to have.
Now, change the variable *basedir to the top-level folder
of that structure.
When you execute this program, you can navigate through the
structure and open any folder and start any program within
that structure.}
web: http://rebolution.esmartweb.com/index.html
e-mail: "xapwing-at-gmail-dot-com"
library: [
level: 'beginner
platform: 'all
type: [tool]
domain: [file-handling]
tested-under: [REBOL/View 2.7.5.3.1]
support: none
license: none
see-also: none
]
version: 0.2
history: [
version: [
[0.2 2007-06-06 "Added colors to text-list - thanks to Anton Rolls"]
[0.1 2007-05-30 "Initial release"]
]
]
]
fill-choicelist: func [a-dir /local a-choicelist an-item][
a-choicelist: read/lines a-dir
foreach an-item a-choicelist [
an-item: to-string an-item
]
if *menu-level > 0 [
insert head a-choicelist *back-txt
]
insert tail a-choicelist *quit-txt
a-choicelist: head a-choicelist
]
menu-hit: func [face /local fchoice schoice][
schoice: first face/picked
if schoice = *quit-txt [
quit
]
fchoice: to-file schoice
either schoice = *back-txt [
*menu-level: *menu-level - 1
change-dir %..
*choices: fill-choicelist %.
][
either dir? fchoice [
*menu-level: *menu-level + 1
change-dir fchoice
*choices: fill-choicelist %.
][
call rejoin [{""} fchoice {""}]
quit
]
]
face/data: *choices
show face
]
;==============================
; M a i n P r o g r a m
;
; NOTE: global variables
; begin with a *
;==============================
*menu-level: 0
*back-txt: "=== back ==="
*quit-txt: "=== quit ==="
*basedir: %/d/data/menu+/
change-dir *basedir
*choices: fill-choicelist *basedir
view center-face
gui: layout/size [
origin 0x0
space 0x0
menu: text-list data *choices 900x699 [menu-hit face] with [
append init [
iter/feel: make iter/feel [
redraw: func [face action into][
either find picked iter/text [
iter/color: svvc/field-select
][
switch/default last iter/text [
#"/" [iter/color: 142.255.192]
#"=" [iter/color: red]
] [iter/color: 172.240.255]
]
]
]
]
]
] 900x700 |