Changeset 110
- Timestamp:
- 12/24/07 07:12:10 (11 months ago)
- Files:
-
- 2 added
- 4 removed
- 22 modified
-
RebDOC.r (added)
-
functions/request-dir.r (modified) (1 diff)
-
rebgui-ctx.r (modified) (2 diffs)
-
rebgui-functions.r (modified) (2 diffs)
-
rebgui-layout.r (modified) (2 diffs)
-
rebgui-widgets.r (modified) (4 diffs)
-
rebgui.r (modified) (34 diffs)
-
tour.r (modified) (5 diffs)
-
widgets/anim.r (modified) (1 diff)
-
widgets/bar.r (modified) (1 diff)
-
widgets/box.r (modified) (1 diff)
-
widgets/chart.r (deleted)
-
widgets/chat.r (modified) (1 diff)
-
widgets/drop-tree.r (deleted)
-
widgets/grid.r (deleted)
-
widgets/heading.r (added)
-
widgets/image.r (modified) (1 diff)
-
widgets/input-grid.r (deleted)
-
widgets/label.r (modified) (2 diffs)
-
widgets/link.r (modified) (3 diffs)
-
widgets/panel.r (modified) (1 diff)
-
widgets/pie-chart.r (modified) (2 diffs)
-
widgets/scroll-panel.r (modified) (6 diffs)
-
widgets/splitter.r (modified) (3 diffs)
-
widgets/text.r (modified) (2 diffs)
-
widgets/title-group.r (modified) (1 diff)
-
widgets/tool-bar.r (modified) (1 diff)
-
widgets/tree.r (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
functions/request-dir.r
r73 r110 1 1 set 'request-dir make function! [ 2 "Requests a directory using a popup list."2 "Requests a directory." 3 3 /title text [string!] "Title text" 4 /dir path [file!] "Set starting directory" 5 /local result txt lst new files 4 /path dir [file!] "Set starting directory" 5 /expand "Start with all nodes expanded" 6 /local result txt opts 6 7 ][ 7 text: any [text "Select a Directory:"] 8 if any [none? path not exists? path] [path: clean-path %.] 8 if any [none? dir not exists? dir] [dir: clean-path %.] 9 dir: dirize dir 10 opts: either expand [[resize expand]] [[resize]] 9 11 result: none 10 display/dialog text compose/deep [ 11 txt: text 100 (form to-local-file path) 12 return 13 label "New" 11 14 new: field 70 15 button 15x5 #L "Make" [ 16 unless empty? trim new/text [ 17 either error? try [make-dir join path new/text] [ 18 alert "Warning" "Could not create directory" 19 ][ 20 set-text txt to-local-file path 21 insert clear lst/data read-dir path 22 lst/redraw 23 ] 12 display/dialog any [text "Select a Directory:"] [ 13 after 1 14 txt: text 100 (form to-local-file dir) 15 scroll-panel #HW 100x50 data [ 16 tree 100x50 options opts data (read-dir dir) [ 17 var: dir 18 foreach item face/data [var: rejoin [var item #"/"]] 19 set-text txt to-local-file var 24 20 ] 25 21 ] 26 return 27 lst: text-list 100x50 data [(read-dir path)] [ 28 ; fixed bug when reading non-existent directory 29 ; like empty cd-rom from root 30 path: dirize clean-path join path pick face/data first face/picked 31 files: attempt [read-dir path] 32 either files [ 33 set-text txt to-local-file path 34 insert clear face/data read-dir path 35 face/redraw 36 ][path: to-rebol-file txt/text] 37 ] 38 return 39 bar 22 bar #WY 40 23 reverse 41 button "Open" [result: dirize to-rebol-file txt/text hide-popup] 42 button "Home" [ 43 path: %/ 44 set-text txt to-local-file path 45 insert clear lst/data read-dir path 46 lst/redraw 47 ] 24 button #XY "Open" [result: dirize to-rebol-file txt/text hide-popup] 48 25 ] 49 26 result -
rebgui-ctx.r
r109 r110 111 111 ctx-rebgui: make object! [ 112 112 113 build: 1 09113 build: 110 114 114 view*: system/view 115 115 locale*: system/locale … … 274 274 action-on-tab: [field] 275 275 caret-on-focus: [area] 276 cyclic: [ sheet tab-panel]276 cyclic: [group-box panel sheet tab-panel] 277 277 hilight-on-focus: [edit-list field password spinner] 278 278 tabbed: [area button drop-list drop-tree edit-list field grid password spinner] -
rebgui-functions.r
r109 r110 51 51 ] 52 52 53 make object! [53 functions: make object! [ 54 54 55 55 color-spec: copy [text-size 15 margin 2x2 space 1x1] … … 83 83 ] 84 84 85 ; read-dir: make function! [path /local blk dirs] [ 86 ; blk: copy [] 87 ; if dirs: attempt [read path] [ 88 ; foreach dir remove-each file sort dirs [any [#"/" <> last file #"." = first file]] [ 89 ; insert tail blk dir 90 ; insert/only tail blk read-dir path/:dir 91 ; if empty? last blk [remove back tail blk] 92 ; ] 93 ; ] 94 ; blk 95 ; ] 96 97 read-dir: make function! [path /local blk] [ 85 read-dir: make function! [path /local blk dirs] [ 98 86 blk: copy [] 99 foreach f remove-each file read path [#"/" <> last file] [ 100 insert tail blk head remove back tail f 87 if dirs: attempt [read path] [ 88 foreach dir remove-each file sort dirs [any [#"/" <> last file #"." = first file]] [ 89 insert tail blk head remove back tail dir 90 insert/only tail blk read-dir dirize path/:dir 91 if empty? last blk [remove back tail blk] 92 ] 101 93 ] 102 sort blk103 unless path = %/ [insert head blk %..]104 94 blk 105 95 ] -
rebgui-layout.r
r100 r110 25 25 95 Added on keyword so multiple handlers can be specified at once 26 26 100 Copy option block 27 110 Added url! 27 28 } 28 29 ] … … 357 358 | set arg image! (attribute-image: arg) 358 359 | set arg file! (attribute-image: load arg) 360 | set arg url! (attribute-data: arg) 359 361 | set arg block! ( 360 362 case [ -
rebgui-widgets.r
r108 r110 47 47 default-font/name: effects/font 48 48 default-font-bold: make default-font [style: 'bold] 49 default-font-large: make default-font [size: sizes/font * 2] 49 50 default-font-right: make default-font [align: 'right] 50 51 default-font-top: make default-font [valign: 'top] … … 82 83 default-font-bold: make default-font [ 83 84 style: 'bold 85 ] 86 87 default-font-large: make default-font [ 88 size: sizes/font * 2 84 89 ] 85 90 … … 508 513 #include %widgets/field.r 509 514 #include %widgets/group-box.r 515 #include %widgets/heading.r 510 516 #include %widgets/image.r 511 517 #include %widgets/label.r … … 531 537 #include %widgets/text-list.r 532 538 #include %widgets/title-group.r 533 #include %widgets/tree.r534 539 #include %widgets/tool-bar.r 535 540 #include %widgets/tooltip.r 541 #include %widgets/tree.r 536 542 ] -
rebgui.r
r109 r110 1 REBOL[version: 1 09]1 REBOL[version: 110] 2 2 if system/version < 1.3.2[make error! "RebGUI requires View 1.3.2 or greater"] 3 3 unless value? 'viewed?[ … … 24 24 ] 25 25 ctx-rebgui: make object![ 26 build: 1 0926 build: 110 27 27 view*: system/view 28 28 locale*: system/locale … … 148 148 action-on-tab:[field] 149 149 caret-on-focus:[area] 150 cyclic:[ sheet tab-panel]150 cyclic:[group-box panel sheet tab-panel] 151 151 hilight-on-focus:[edit-list field password spinner] 152 152 tabbed:[area button drop-list drop-tree edit-list field grid password spinner] … … 624 624 default-font/name: effects/font 625 625 default-font-bold: make default-font[style: 'bold] 626 default-font-large: make default-font[size: sizes/font * 2] 626 627 default-font-right: make default-font[align: 'right] 627 628 default-font-top: make default-font[valign: 'top] … … 652 653 default-font-bold: make default-font[ 653 654 style: 'bold 655 ] 656 default-font-large: make default-font[ 657 size: sizes/font * 2 654 658 ] 655 659 default-font-right: make default-font[ … … 1015 1019 anim: make rebface[ 1016 1020 tip:{USAGE: 1017 anim data[%im g1.png %img2.png]1021 anim data[%images/go-previous.png %images/go-next.png] 1018 1022 anim data[img1 img2 img3]rate 2 1019 1023 DESCRIPTION: … … 1188 1192 bar: make rebface[ 1189 1193 tip:{USAGE: 1190 bar1191 1194 bar 100 1192 1195 DESCRIPTION: … … 1200 1203 box: make rebface[ 1201 1204 tip:{USAGE: 1202 box1203 1205 box red 1204 1206 DESCRIPTION: … … 1326 1328 chat: make rebface[ 1327 1329 tip:{USAGE: 1328 chat 1330 chat 140x50 1329 1331 chat data["Bob" blue "My comment." yello 14-Apr-2007/10:58] 1330 1332 DESCRIPTION: … … 1844 1846 ] 1845 1847 ] 1848 heading: make rebface[ 1849 tip:{USAGE: 1850 heading "A text heading." 1851 DESCRIPTION: 1852 Large text.} 1853 size: -1x-1 1854 text: "" 1855 font: default-font-large 1856 para: default-para-wrap 1857 init: make function![][ 1858 all[negative? size/x negative? size/y size: 10000x10000 size: 4x4 + size-text self] 1859 all[negative? size/x size/x: 10000 size/x: 4 + first size-text self] 1860 all[negative? size/y size/y: 10000 size/y: 4 + second size-text self] 1861 all[size/y > sizes/line font/align <> 'center font: make font[valign: 'top]] 1862 size/y: max size/y sizes/line 1863 ] 1864 ] 1846 1865 image: make rebface[ 1847 1866 tip:{USAGE: 1848 image % logo.png1867 image %images/logo.png 1849 1868 image logo 1850 1869 image logo effect[crop 10x10 50x50] … … 1858 1877 ] 1859 1878 ] 1860 label: make rebface[1879 label: make heading[ 1861 1880 tip:{USAGE: 1862 1881 label "A text label." 1863 1882 DESCRIPTION: 1864 1883 Bold text.} 1865 size: -1x-1 1866 text: "" 1867 font: default-font-bold 1868 para: default-para-wrap 1869 init: make function![][ 1870 all[negative? size/x negative? size/y size: 10000x10000 size: 4x4 + size-text self] 1871 all[negative? size/x size/x: 10000 size/x: 4 + first size-text self] 1872 all[negative? size/y size/y: 10000 size/y: 4 + second size-text self] 1873 all[size/y > sizes/line font/align <> 'center font: make font[valign: 'top]] 1874 size/y: max size/y sizes/line 1875 ] 1884 font: default-font-bold 1876 1885 ] 1877 1886 led: make rebface[ … … 1951 1960 tip:{USAGE: 1952 1961 link 1953 link "www.dobeash.com"1954 link " http://www.dobeash.com"1962 link http://www.dobeash.com 1963 link "RebGUI" http://www.dobeash.com/rebgui 1955 1964 DESCRIPTION: 1956 1965 Hypertext link.} 1957 1966 size: -1x5 1958 text: "www.rebol.com"1959 1967 font: make default-font[color: blue style: 'underline] 1960 1968 para: default-para … … 1976 1984 ] 1977 1985 init: make function![][ 1986 unless text[text: either data[form data]["http://www.rebol.com"]] 1987 unless data[data: to url! text] 1978 1988 all[negative? size/x size/x: 10000 size/x: 4 + first size-text self] 1979 data: either "http://" = copy/part text 7[to url! text][join http:// text]1980 1989 ] 1981 1990 ] … … 2029 2038 panel: make rebface[ 2030 2039 tip:{USAGE: 2031 panel data[field field]2032 2040 panel sky data[after 1 field field] 2033 2041 DESCRIPTION: … … 2113 2121 [start n]where n is the degrees value 2114 2122 [explode n]when n is the number of pixels} 2123 size: 50x50 2115 2124 feel: make default-feel[ 2116 2125 redraw: make function![face act pos /local plot total angle pie-size label-offset label-distance label-size][ … … 2146 2155 degrees: 270 2147 2156 init: make function![][ 2157 data: reduce data 2148 2158 explode: any[select options 'explode 0] 2149 2159 if select options 'start[ … … 2268 2278 scroll-panel: make rebface[ 2269 2279 tip:{USAGE: 2270 scroll-panel data[calendar] 2271 scroll-panel data[field field] 2280 scroll-panel data[sheet] 2272 2281 DESCRIPTION: 2273 A panel used to group widgets within a scrollable container.} 2282 A panel used to group widgets within a scrollable container. 2283 OPTIONS: 2284 'offset keeps the original offset} 2274 2285 size: 50x50 2275 2286 pane:[] … … 2277 2288 edge: default-edge 2278 2289 panel: none 2279 resize: make function![][ 2280 pane/2/ratio: min 1 size/y - sizes/slider / panel/size/y 2281 pane/3/ratio: min 1 size/x - sizes/slider / panel/size/x 2290 sld-offset: 0x0 2291 resize: make function![/child][ 2292 pane/2/show?: either panel/size/y <= size/y[sld-offset/x: 0 false][sld-offset/x: sizes/slider true] 2293 pane/3/show?: either panel/size/x <= size/x[sld-offset/y: 0 false][sld-offset/y: sizes/slider true] 2294 pane/4/show?: either any[pane/2/show? pane/3/show?][true][false] 2295 pane/2/ratio: min 1 size/y - sld-offset/y / panel/size/y 2296 pane/3/ratio: min 1 size/x - sld-offset/x / panel/size/x 2297 if child[ 2298 all[pane/2/ratio = 1 pane/2/data: pane/1/offset/y: 0] 2299 all[pane/3/ratio = 1 pane/3/data: pane/1/offset/x: 0] 2300 show self 2301 ] 2282 2302 ] 2283 2303 rebind: make function![][color: colors/widget] … … 2286 2306 data: layout/only data 2287 2307 insert pane either 1 = length? data/pane[first data/pane][data] 2288 all[negative? size/x size/x: data/size/x + sizes/slider]2289 all[negative? size/y size/y: data/size/y + sizes/slider]2308 all[negative? size/x size/x: data/size/x] 2309 all[negative? size/y size/y: data/size/y] 2290 2310 data: none 2291 2311 panel: first pane 2292 panel/offset: 0x0 2312 color: panel/color 2313 unless find options 'offset[panel/offset: 0x0] 2293 2314 panel/edge: none 2294 2315 insert tail pane make slider[ … … 2305 2326 action: make default-action[ 2306 2327 on-click: make function![face][ 2307 panel/offset/y: negate (panel/size/y - face/size/y) * face/data2328 panel/offset/y: negate (panel/size/y - p/size/y - sld-offset/y) * face/data 2308 2329 show panel 2309 2330 ] … … 2324 2345 action: make default-action[ 2325 2346 on-click: make function![face][ 2326 panel/offset/x: negate (panel/size/x - face/size/x) * face/data2347 panel/offset/x: negate (panel/size/x - p/size/x - sld-offset/x) * face/data 2327 2348 show panel 2328 2349 ] … … 2345 2366 p: face/parent-face 2346 2367 either panel/offset = 0x0[ 2347 all[panel/size/y > (p/size/y - s izes/slider) p/pane/2/data: 1]2348 all[panel/size/x > (p/size/x - s izes/slider) p/pane/3/data: 1]2368 all[panel/size/y > (p/size/y - sld-offset/y) p/pane/2/data: 1] 2369 all[panel/size/x > (p/size/x - sld-offset/x) p/pane/3/data: 1] 2349 2370 ][ 2350 2371 p/pane/2/data: p/pane/3/data: 0 2351 2372 ] 2352 show p/pane 2373 all[p/pane/2/show? show p/pane/2] 2374 all[p/pane/3/show? show p/pane/3] 2353 2375 ] 2354 2376 ] … … 2806 2828 Allows both to be resized by dragging the splitter left/right or up/down respectively. 2807 2829 Its size determines whether it is vertical or horizontal.} 2808 size: 1x 502809 color: co lors/window2830 size: 1x25 2831 color: coal 2810 2832 feel: make default-feel[ 2811 2833 redraw: make function![face act pos /local f p n][ … … 2828 2850 ] 2829 2851 over: make function![face act pos][ 2830 face/color: either act[colors/over][co lors/window]2852 face/color: either act[colors/over][coal] 2831 2853 show face 2832 2854 ] … … 2851 2873 ] 2852 2874 ] 2853 rebind: make function![][color: co lors/window]2875 rebind: make function![][color: coal] 2854 2876 ] 2855 2877 style: make rebface[ … … 3331 3353 ] 3332 3354 ] 3333 text: make label[3355 text: make heading[ 3334 3356 tip:{USAGE: 3335 3357 text "A text string." … … 3339 3361 text "Underline text" underline 3340 3362 DESCRIPTION: 3341 A box plustext.}3363 Normal text.} 3342 3364 font: default-font 3343 3365 ] … … 3397 3419 title-group: make rebface[ 3398 3420 tip:{USAGE: 3399 title-group "Body text" data "Title text"3400 3421 title-group %images/setup.png data "Title" "Body" 3401 3422 DESCRIPTION: … … 3428 3449 ] 3429 3450 ] 3430 tree: make rebface[3431 tip:{USAGE:3432 tree data["Pets"["Cat" "Dog"]"Numbers"[1 2 3]]3433 DESCRIPTION:3434 Values arranged in a collapsible hierarchy.3435 OPTIONS:3436 'expand starts with all nodes expanded}3437 size: 50x253438 pane:[]3439 color: white3440 data:[]3441 edge: default-edge3442 chain:3443 pos:3444 expand?:3445 sld:3446 p:3447 old-face: none3448 height: 03449 show-node: make function![items /no-expand][3450 foreach item items[3451 either block? item[3452 either expand?[show-node item][show-node/no-expand item]3453 ][3454 expand?: either no-expand[3455 pane/1/offset/y: negate sizes/line3456 false3457 ][3458 pane/1/offset/y: pos3459 pos: pos + sizes/line3460 height: height + sizes/line3461 either pane/1/expand?[true][false]3462 ]3463 pane: next pane3464 ]3465 ]3466 ]3467 show-tree: make function![][3468 pos: negate (height - size/y) * sld/data3469 height: 03470 show-node data3471 all[3472 pos <> 03473 height <= size/y3474 pos: height: 03475 pane: head pane3476 show-node data3477 ]3478 sld/ratio: size/y / height3479 show pane: head pane3480 ]3481 build-tree: make function![items /local last-item][3482 foreach item items[3483 either block? item[3484 last-item: last pane3485 last-item/pane/effect/rotate: either find options 'expand[last-item/expand?: true 180][last-item/expand?: false 90]3486 insert tail chain last last-item/data3487 pos: pos + sizes/line3488 build-tree item3489 pos: pos - sizes/line3490 remove back tail chain3491 ][3492 insert tail pane make subface[3493 offset: as-pair pos 03494 size: as-pair p/size/x - pos - sizes/slider sizes/line3495 text: form item3496 data: compose[(chain) (item)]3497 span: all[p/span find p/span #W #W]3498 pane: make subface[3499 size: as-pair sizes/line sizes/line3500 effect: copy[arrow rotate 90]3501 ]3502 font: make default-font[]3503 para: default-para-indented3504 feel: make default-feel[3505 engage: make function![face act event][3506 if act = 'down[3507 all[old-face deselect-row old-face]3508 unless none? face/expand?[3509 face/pane/effect/rotate: either face/expand?[face/expand?: false 90][face/expand?: true 180]3510 show-tree3511 ]3512 select-row face3513 old-face: face3514 face/parent-face/action/on-click face3515 ]3516 ]3517 ]3518 expand?: none3519 ]3520 ]3521 ]3522 ]3523 rebind: make function![][color: white]3524 init: make function![][3525 p: self3526 pos: 03527 chain: copy[]3528 build-tree data3529 insert tail pane make slider[3530 tip: none3531 offset: as-pair p/size/x - sizes/slider 03532 size: as-pair sizes/slider p/size/y3533 span: case[3534 none? p/span[none]3535 all[find p/span #H find p/span #W][#XH]3536 find p/span #H[#H]3537 find p/span #W[#X]3538 ]3539 options:[arrows]3540 action: make default-action[3541 on-click: make function![face][show-tree]3542 ]3543 ]3544 sld: last pane3545 sld/init3546 show-tree3547 ]3548 ]3549 3451 tool-bar: make rebface[ 3550 3452 tip:{USAGE: 3551 tool-bar data["Open" %open.png[request-file]pad 2 none "Save" %save.png[]]3453 tool-bar silver data["Open" %images/document-open.png[request-file]pad 2 none "Save" %images/document-save.png[]] 3552 3454 DESCRIPTION: 3553 3455 An iconic toolbar. Height is set to 30 pixels. … … 3614 3516 ] 3615 3517 poke effect/draw 9 size - 1x1 3518 ] 3519 ] 3520 tree: make rebface[ 3521 tip:{USAGE: 3522 tree data["Pets"["Cat" "Dog"]"Numbers"[1 2 3]] 3523 DESCRIPTION: 3524 Values arranged in a collapsible hierarchy. 3525 OPTIONS: 3526 'expand starts with all nodes expanded 3527 'resize adjust widget size as nodes are expanded / collapsed} 3528 size: 50x25 3529 pane:[] 3530 color: white 3531 data:[] 3532 edge: default-edge 3533 chain: 3534 pos: 3535 expand?: 3536 p: 3537 old-face: none 3538 width: 3539 height: 0 3540 show-node: make function![items /no-expand][ 3541 foreach item items[ 3542 either block? item[ 3543 either expand?[show-node item][show-node/no-expand item] 3544 ][ 3545 expand?: either no-expand[ 3546 pane/1/offset/y: negate sizes/line 3547 false 3548 ][ 3549 pane/1/offset/y: pos 3550 pos: pos + sizes/line 3551 height: height + sizes/line 3552 width: max width pane/1/offset/x + pane/1/size/x 3553 either pane/1/expand?[true][false] 3554 ] 3555 pane: next pane 3556 ]
