Changeset 110

Show
Ignore:
Timestamp:
12/24/07 07:12:10 (11 months ago)
Author:
ashley
Message:

Added RebDOC app and heading widget
scroll-panel.r and tree.r fixes
Removed unmaintained widgets

Files:
2 added
4 removed
22 modified

Legend:

Unmodified
Added
Removed
  • functions/request-dir.r

    r73 r110  
    11set 'request-dir make function! [ 
    2         "Requests a directory using a popup list." 
     2        "Requests a directory." 
    33        /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 
    67][ 
    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]] 
    911        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 
    2420                        ] 
    2521                ] 
    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 
    4023                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] 
    4825        ] 
    4926        result 
  • rebgui-ctx.r

    r109 r110  
    111111ctx-rebgui: make object! [ 
    112112 
    113         build:          109 
     113        build:          110 
    114114        view*:          system/view 
    115115        locale*:        system/locale 
     
    274274                action-on-tab:          [field] 
    275275                caret-on-focus:         [area] 
    276                 cyclic:                         [sheet tab-panel] 
     276                cyclic:                         [group-box panel sheet tab-panel] 
    277277                hilight-on-focus:       [edit-list field password spinner] 
    278278                tabbed:                         [area button drop-list drop-tree edit-list field grid password spinner] 
  • rebgui-functions.r

    r109 r110  
    5151] 
    5252 
    53 make object! [ 
     53functions: make object! [ 
    5454 
    5555        color-spec: copy [text-size 15 margin 2x2 space 1x1] 
     
    8383        ] 
    8484 
    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] [ 
    9886                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                        ] 
    10193                ] 
    102                 sort blk 
    103                 unless path = %/ [insert head blk %..] 
    10494                blk 
    10595        ] 
  • rebgui-layout.r

    r100 r110  
    2525                95      Added on keyword so multiple handlers can be specified at once 
    2626                100     Copy option block 
     27                110     Added url! 
    2728        } 
    2829] 
     
    357358                |       set arg image!                                                          (attribute-image: arg) 
    358359                |       set arg file!                                                           (attribute-image: load arg) 
     360                |       set arg url!                                                            (attribute-data: arg) 
    359361                |       set arg block!                                                          ( 
    360362                                                                                                                        case [ 
  • rebgui-widgets.r

    r108 r110  
    4747                default-font/name:      effects/font 
    4848                default-font-bold:      make default-font [style: 'bold] 
     49                default-font-large:     make default-font [size: sizes/font * 2] 
    4950                default-font-right:     make default-font [align: 'right] 
    5051                default-font-top:       make default-font [valign: 'top] 
     
    8283        default-font-bold: make default-font [ 
    8384                style:  'bold 
     85        ] 
     86 
     87        default-font-large: make default-font [ 
     88                size:   sizes/font * 2 
    8489        ] 
    8590 
     
    508513        #include %widgets/field.r 
    509514        #include %widgets/group-box.r 
     515        #include %widgets/heading.r 
    510516        #include %widgets/image.r 
    511517        #include %widgets/label.r 
     
    531537        #include %widgets/text-list.r 
    532538        #include %widgets/title-group.r 
    533         #include %widgets/tree.r 
    534539        #include %widgets/tool-bar.r 
    535540        #include %widgets/tooltip.r 
     541        #include %widgets/tree.r 
    536542] 
  • rebgui.r

    r109 r110  
    1 REBOL[version: 109] 
     1REBOL[version: 110] 
    22if system/version < 1.3.2[make error! "RebGUI requires View 1.3.2 or greater"] 
    33unless value? 'viewed?[ 
     
    2424] 
    2525ctx-rebgui: make object![ 
    26 build: 109  
     26build: 110  
    2727view*: system/view  
    2828locale*: system/locale  
     
    148148action-on-tab:[field] 
    149149caret-on-focus:[area] 
    150 cyclic:[sheet tab-panel] 
     150cyclic:[group-box panel sheet tab-panel] 
    151151hilight-on-focus:[edit-list field password spinner] 
    152152tabbed:[area button drop-list drop-tree edit-list field grid password spinner] 
     
    624624default-font/name: effects/font  
    625625default-font-bold: make default-font[style: 'bold] 
     626default-font-large: make default-font[size: sizes/font * 2] 
    626627default-font-right: make default-font[align: 'right] 
    627628default-font-top: make default-font[valign: 'top] 
     
    652653default-font-bold: make default-font[ 
    653654style: 'bold 
     655] 
     656default-font-large: make default-font[ 
     657size: sizes/font * 2 
    654658] 
    655659default-font-right: make default-font[ 
     
    10151019anim: make rebface[ 
    10161020tip:{USAGE: 
    1017 anim data[%img1.png %img2.png] 
     1021anim data[%images/go-previous.png %images/go-next.png] 
    10181022anim data[img1 img2 img3]rate 2 
    10191023DESCRIPTION: 
     
    11881192bar: make rebface[ 
    11891193tip:{USAGE: 
    1190 bar 
    11911194bar 100 
    11921195DESCRIPTION: 
     
    12001203box: make rebface[ 
    12011204tip:{USAGE: 
    1202 box 
    12031205box red 
    12041206DESCRIPTION: 
     
    13261328chat: make rebface[ 
    13271329tip:{USAGE: 
    1328 chat 
     1330chat 140x50 
    13291331chat data["Bob" blue "My comment." yello 14-Apr-2007/10:58] 
    13301332DESCRIPTION: 
     
    18441846] 
    18451847] 
     1848heading: make rebface[ 
     1849tip:{USAGE: 
     1850heading "A text heading." 
     1851DESCRIPTION: 
     1852Large text.} 
     1853size: -1x-1  
     1854text: ""  
     1855font: default-font-large  
     1856para: default-para-wrap  
     1857init: make function![][ 
     1858all[negative? size/x negative? size/y size: 10000x10000 size: 4x4 + size-text self] 
     1859all[negative? size/x size/x: 10000 size/x: 4 + first size-text self] 
     1860all[negative? size/y size/y: 10000 size/y: 4 + second size-text self] 
     1861all[size/y > sizes/line font/align <> 'center font: make font[valign: 'top]] 
     1862size/y: max size/y sizes/line 
     1863] 
     1864] 
    18461865image: make rebface[ 
    18471866tip:{USAGE: 
    1848 image %logo.png 
     1867image %images/logo.png 
    18491868image logo 
    18501869image logo effect[crop 10x10 50x50] 
     
    18581877] 
    18591878] 
    1860 label: make rebface[ 
     1879label: make heading[ 
    18611880tip:{USAGE: 
    18621881label "A text label." 
    18631882DESCRIPTION: 
    18641883Bold 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 ] 
     1884font: default-font-bold 
    18761885] 
    18771886led: make rebface[ 
     
    19511960tip:{USAGE: 
    19521961link 
    1953 link "www.dobeash.com" 
    1954 link "http://www.dobeash.com" 
     1962link http://www.dobeash.com 
     1963link "RebGUI" http://www.dobeash.com/rebgui 
    19551964DESCRIPTION: 
    19561965Hypertext link.} 
    19571966size: -1x5  
    1958 text: "www.rebol.com"  
    19591967font: make default-font[color: blue style: 'underline] 
    19601968para: default-para  
     
    19761984] 
    19771985init: make function![][ 
     1986unless text[text: either data[form data]["http://www.rebol.com"]] 
     1987unless data[data: to url! text] 
    19781988all[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] 
    19801989] 
    19811990] 
     
    20292038panel: make rebface[ 
    20302039tip:{USAGE: 
    2031 panel data[field field] 
    20322040panel sky data[after 1 field field] 
    20332041DESCRIPTION: 
     
    21132121[start n]where n is the degrees value 
    21142122[explode n]when n is the number of pixels} 
     2123size: 50x50  
    21152124feel: make default-feel[ 
    21162125redraw: make function![face act pos /local plot total angle pie-size label-offset label-distance label-size][ 
     
    21462155degrees: 270  
    21472156init: make function![][ 
     2157data: reduce data  
    21482158explode: any[select options 'explode 0] 
    21492159if select options 'start[ 
     
    22682278scroll-panel: make rebface[ 
    22692279tip:{USAGE: 
    2270 scroll-panel data[calendar] 
    2271 scroll-panel data[field field] 
     2280scroll-panel data[sheet] 
    22722281DESCRIPTION: 
    2273 A panel used to group widgets within a scrollable container.} 
     2282A panel used to group widgets within a scrollable container. 
     2283OPTIONS: 
     2284'offset keeps the original offset} 
    22742285size: 50x50  
    22752286pane:[] 
     
    22772288edge: default-edge  
    22782289panel: 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 
     2290sld-offset: 0x0  
     2291resize: make function![/child][ 
     2292pane/2/show?: either panel/size/y <= size/y[sld-offset/x: 0 false][sld-offset/x: sizes/slider true] 
     2293pane/3/show?: either panel/size/x <= size/x[sld-offset/y: 0 false][sld-offset/y: sizes/slider true] 
     2294pane/4/show?: either any[pane/2/show? pane/3/show?][true][false] 
     2295pane/2/ratio: min 1 size/y - sld-offset/y / panel/size/y  
     2296pane/3/ratio: min 1 size/x - sld-offset/x / panel/size/x  
     2297if child[ 
     2298all[pane/2/ratio = 1 pane/2/data: pane/1/offset/y: 0] 
     2299all[pane/3/ratio = 1 pane/3/data: pane/1/offset/x: 0] 
     2300show self 
     2301] 
    22822302] 
    22832303rebind: make function![][color: colors/widget] 
     
    22862306data: layout/only data  
    22872307insert 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] 
     2308all[negative? size/x size/x: data/size/x] 
     2309all[negative? size/y size/y: data/size/y] 
    22902310data: none  
    22912311panel: first pane  
    2292 panel/offset: 0x0  
     2312color: panel/color  
     2313unless find options 'offset[panel/offset: 0x0] 
    22932314panel/edge: none  
    22942315insert tail pane make slider[ 
     
    23052326action: make default-action[ 
    23062327on-click: make function![face][ 
    2307 panel/offset/y: negate (panel/size/y - face/size/y) * face/data  
     2328panel/offset/y: negate (panel/size/y - p/size/y - sld-offset/y) * face/data  
    23082329show panel 
    23092330] 
     
    23242345action: make default-action[ 
    23252346on-click: make function![face][ 
    2326 panel/offset/x: negate (panel/size/x - face/size/x) * face/data  
     2347panel/offset/x: negate (panel/size/x - p/size/x - sld-offset/x) * face/data  
    23272348show panel 
    23282349] 
     
    23452366p: face/parent-face  
    23462367either panel/offset = 0x0[ 
    2347 all[panel/size/y > (p/size/y - sizes/slider) p/pane/2/data: 1] 
    2348 all[panel/size/x > (p/size/x - sizes/slider) p/pane/3/data: 1] 
     2368all[panel/size/y > (p/size/y - sld-offset/y) p/pane/2/data: 1] 
     2369all[panel/size/x > (p/size/x - sld-offset/x) p/pane/3/data: 1] 
    23492370][ 
    23502371p/pane/2/data: p/pane/3/data: 0 
    23512372] 
    2352 show p/pane 
     2373all[p/pane/2/show? show p/pane/2] 
     2374all[p/pane/3/show? show p/pane/3] 
    23532375] 
    23542376] 
     
    28062828Allows both to be resized by dragging the splitter left/right or up/down respectively. 
    28072829Its size determines whether it is vertical or horizontal.} 
    2808 size: 1x50  
    2809 color: colors/window  
     2830size: 1x25  
     2831color: coal  
    28102832feel: make default-feel[ 
    28112833redraw: make function![face act pos /local f p n][ 
     
    28282850] 
    28292851over: make function![face act pos][ 
    2830 face/color: either act[colors/over][colors/window] 
     2852face/color: either act[colors/over][coal] 
    28312853show face 
    28322854] 
     
    28512873] 
    28522874] 
    2853 rebind: make function![][color: colors/window] 
     2875rebind: make function![][color: coal] 
    28542876] 
    28552877style: make rebface[ 
     
    33313353] 
    33323354] 
    3333 text: make label[ 
     3355text: make heading[ 
    33343356tip:{USAGE: 
    33353357text "A text string." 
     
    33393361text "Underline text" underline 
    33403362DESCRIPTION: 
    3341 A box plus text.} 
     3363Normal text.} 
    33423364font: default-font 
    33433365] 
     
    33973419title-group: make rebface[ 
    33983420tip:{USAGE: 
    3399 title-group "Body text" data "Title text" 
    34003421title-group %images/setup.png data "Title" "Body" 
    34013422DESCRIPTION: 
     
    34283449] 
    34293450] 
    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: 50x25  
    3438 pane:[] 
    3439 color: white  
    3440 data:[] 
    3441 edge: default-edge  
    3442 chain:  
    3443 pos:  
    3444 expand?:  
    3445 sld:  
    3446 p:  
    3447 old-face: none  
    3448 height: 0  
    3449 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/line  
    3456 false 
    3457 ][ 
    3458 pane/1/offset/y: pos  
    3459 pos: pos + sizes/line  
    3460 height: height + sizes/line  
    3461 either pane/1/expand?[true][false] 
    3462 ] 
    3463 pane: next pane 
    3464 ] 
    3465 ] 
    3466 ] 
    3467 show-tree: make function![][ 
    3468 pos: negate (height - size/y) * sld/data  
    3469 height: 0  
    3470 show-node data  
    3471 all[ 
    3472 pos <> 0  
    3473 height <= size/y  
    3474 pos: height: 0  
    3475 pane: head pane  
    3476 show-node data 
    3477 ] 
    3478 sld/ratio: size/y / height  
    3479 show pane: head pane 
    3480 ] 
    3481 build-tree: make function![items /local last-item][ 
    3482 foreach item items[ 
    3483 either block? item[ 
    3484 last-item: last pane  
    3485 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/data  
    3487 pos: pos + sizes/line  
    3488 build-tree item  
    3489 pos: pos - sizes/line  
    3490 remove back tail chain 
    3491 ][ 
    3492 insert tail pane make subface[ 
    3493 offset: as-pair pos 0  
    3494 size: as-pair p/size/x - pos - sizes/slider sizes/line  
    3495 text: form item  
    3496 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/line  
    3500 effect: copy[arrow rotate 90] 
    3501 ] 
    3502 font: make default-font[] 
    3503 para: default-para-indented  
    3504 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-tree 
    3511 ] 
    3512 select-row face  
    3513 old-face: face  
    3514 face/parent-face/action/on-click face 
    3515 ] 
    3516 ] 
    3517 ] 
    3518 expand?: none 
    3519 ] 
    3520 ] 
    3521 ] 
    3522 ] 
    3523 rebind: make function![][color: white] 
    3524 init: make function![][ 
    3525 p: self  
    3526 pos: 0  
    3527 chain: copy[] 
    3528 build-tree data  
    3529 insert tail pane make slider[ 
    3530 tip: none  
    3531 offset: as-pair p/size/x - sizes/slider 0  
    3532 size: as-pair sizes/slider p/size/y  
    3533 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 pane  
    3545 sld/init  
    3546 show-tree 
    3547 ] 
    3548 ] 
    35493451tool-bar: make rebface[ 
    35503452tip:{USAGE: 
    3551 tool-bar data["Open" %open.png[request-file]pad 2 none "Save" %save.png[]] 
     3453tool-bar silver data["Open" %images/document-open.png[request-file]pad 2 none "Save" %images/document-save.png[]] 
    35523454DESCRIPTION: 
    35533455An iconic toolbar. Height is set to 30 pixels. 
     
    36143516] 
    36153517poke effect/draw 9 size - 1x1 
     3518] 
     3519] 
     3520tree: make rebface[ 
     3521tip:{USAGE: 
     3522tree data["Pets"["Cat" "Dog"]"Numbers"[1 2 3]] 
     3523DESCRIPTION: 
     3524Values arranged in a collapsible hierarchy. 
     3525OPTIONS: 
     3526'expand starts with all nodes expanded 
     3527'resize adjust widget size as nodes are expanded / collapsed} 
     3528size: 50x25  
     3529pane:[] 
     3530color: white  
     3531data:[] 
     3532edge: default-edge  
     3533chain:  
     3534pos:  
     3535expand?:  
     3536p:  
     3537old-face: none  
     3538width:  
     3539height: 0  
     3540show-node: make function![items /no-expand][ 
     3541foreach item items[ 
     3542either block? item[ 
     3543either expand?[show-node item][show-node/no-expand item] 
     3544][ 
     3545expand?: either no-expand[ 
     3546pane/1/offset/y: negate sizes/line  
     3547false 
     3548][ 
     3549pane/1/offset/y: pos  
     3550pos: pos + sizes/line  
     3551height: height + sizes/line  
     3552width: max width pane/1/offset/x + pane/1/size/x  
     3553either pane/1/expand?[true][false] 
     3554] 
     3555pane: next pane 
     3556]