Mailing List Archive: 49091 messages
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

[ALLY] View/swis

From: cyphre:volny:cz at: 4-Oct-2000 11:59

This is a multi-part message in MIME format... ------------=_970653573-20028-0 Content-Type: text/plain; charset=windows-1250 Content-Disposition: inline Content-Transfer-Encoding: 7bit Hello to all REBOL fans, last weekend I spent few hours experimenting with REBOL/view because I wanted to make our CHESSTER site (http://i.am/chesster) also in VIEW(f*** HTML ;)) so here is included my result - "Small WIndow System" It's only version 0.0.4 but maybe you will find it useful. Thanks goes to REBOLek<[weirddream--volny--cz]> for nice gfx-buttons and for good ideas. see ya... Cyphre [cyphre--volny--cz] ------------=_970653573-20028-0 Content-Type: text/x-rebol; name="C:\!a\swis.r" Content-Disposition: inline; filename="C:\!a\swis.r" Content-Transfer-Encoding: 7bit REBOL [ Title: "Small WIndow System in Rebol/View " Date: 4-Oct-2000 Version: 0.0.4 file: %swis.r author: "[cyphre--volny--cz][weirddream--volny--cz]" history: ["has to be written"] ] inactive-win-color: 170.170.170 active-win-color: white ;;; window area window-area: make face [ offset: -2x17 feel: make feel [ redraw: func [ face [object!] action [word!] offset [pair!] ][ face/size: to-pair reduce [face/parent-face/size/1 face/parent-face/size/2 - 19] ] ] ] ;.. ;;; titlebar win-titlebar: make face [ offset: 18x-1 color: active-win-color ; effect: [gradcol 1x0 green white ] feel: make feel [ redraw: func [ face [object!] action [word!] offset [pair!] ][ face/text: to-string face/parent-face/title face/size: to-pair reduce [face/parent-face/size/1 - 39 20] ] engage: func [ face [object!] action [word!] event [event!] /local iid ][ if find [down] action [ pos: event/offset iid: last screen-face/pane either not iid/id = face/parent-face/id [ remove (find screen-face/pane face/parent-face/id) remove (find screen-face/pane face/parent-face/self) face/color: active-win-color deactivate-win insert tail screen-face/pane reduce [face/parent-face/id face/parent-face/self] show screen-face ][ if all [ (length? get-win-list) = 1 not face/color = active-win-color ][ face/color: active-win-color show screen-face ] ] ] if find [over away] action [ face/parent-face/offset: face/parent-face/offset + event/offset - pos show face/parent-face ] ] ] ] ;.. ;;; gadgets hide-gadget: make face [ size: 20x20 color: 0.0.0 image: do decompress debase/base {eJzLTcxOVcjMTUxPVVSINjSvMD RXUK7mMjCwAELyyFHNo5pHNRPWTBrggjFcTF1MSbEZqhmijRgS3Roi/YzddXg0E/ YOVs3EhgIXqRrQNJOqDaEej7MxDcUZz/gBdndhjWeINOGYx5NIhlCuIlpbbSwA1D Zh5fsGAAA=} 64 feel: make feel [ redraw: func [ face [object!] action [word!] offset [pair!] ][ face/offset: to-pair reduce [face/parent-face/size/1 - face/size/1 - 2 -1] ] engage: func [ face [object!] action [word!] event [event!] ][ if find [down] action [ either face/parent-face/old-win-size <> 20 [ face/parent-face/size/2: face/parent-face/old-win-size face/parent-face/old-win-size: 20 ][ face/parent-face/old-win-size: face/parent-face/size/2 face/parent-face/size/2: 20 ] show face/parent-face ] ] ] ] size-gadget: make face [ size: 20x20 color: 0.0.0 image: do decompress debase/base {eJzLTcxOVcjMTUxPVVSINjSvMD RXUK7mMjCwAELyyJGgGQJcTF1MaWUzMkDYQ0U/gwAX8faQYTMmoHaA4bOBiv GMAFykBhJJ8YzLCxTZDNVM2AZcstSJZ2L8SVE8owOSAowozcR6gdJ4xqUIAh yBAE+AEXYeLjVooU3lwmCwaeaqjQUAGqJfR/sGAAA=} 64 feel: make feel [ redraw: func [ face [object!] action [word!] offset [pair!] ][ face/offset: face/parent-face/size - face/size - 2 ] engage: func [ face [object!] action [word!] event [event!] ][ if find [down] action [ pos: event/offset ] if find [over away] action [ if all [ (face/parent-face/size/1 + event/offset/1 - pos/1) > 70 (face/parent-face/size/2 + event/offset/2 - pos/2) > 50 ][ face/parent-face/size: face/parent-face/size + event/offset - pos show face/parent-face ] ] ] ] ] close-gadget: make face [ offset: -1x-1 size: 20x20 color: 0.0.0 image: do decompress debase/base {eJzLTcxOVcjMTUxPVVSINjSvMD RXUK7mMjCwAELyyEGvGRm4AQEZNhOlGRMgNBB0NmFtaJqJtQ1ZPRcpGkjWjM9FZI Q2AnDBTCLVz0TZjA9wkRJIJMczPi+QnTGgzsYFaBJgiNghO4WRnLbRAUlRRbJmfC 4a0MLAEQgMDFxMXUwpDG0yNVMtY9BYM1dtLAD8mWKH+wYAAA==} 64 feel: make feel [ engage: func [ face [object!] action [word!] event [event!] ][ if find [down] action [ hide face/parent-face remove (find screen-face/pane face/parent-face/id) remove (find screen-face/pane face/parent-face/self) ] ] ] ] ;.. ;;; window window: func [ name [word!] inside [block!] backdrop [image! block!] /siz win-size /pos win-pos /center /local result ][ win-id: to-lit-word join "win" random 10000 result: [win-id make face [ id: win-id title: name if pos [offset: win-pos] pane: reduce [ 'wa make window-area [ image: backdrop effect: [fit] pane: either (length? inside) = 0 [none][ either siz [layout/offset/size inside 0x0 win-size][layout/offset inside 0x0] ] ] 'cg make close-gadget [] if (length? inside) = 0 ['sg make size-gadget [] ] 'wt make win-titlebar [] 'hg make hide-gadget[] ] either (length? inside) > 0 [size: to-pair reduce [first get in (get in select pane 'wa 'pane) 'size (second get in (get in select pane 'wa 'pane) 'size) + 20]][size: 190x120] if center [ offset: (screen-face/size - size) / 2 ] old-win-size: 20 ]] result ] ;.. get-win-list: func [ /local p list ] [ list: copy [] foreach p screen-face/pane [ if word? p [ append list p ] ] list ] close-win: func [ win-id ][ hide win-root remove (find screen-face/pane win-id) remove (find screen-face/pane win-root/self) ] win-obj: func [ win-id ][ return select screen-face/pane win-id ] deactivate-win: func [] [ if (length? get-win-list) > 0 [ active-win: win-obj (last get-win-list) set in (select active-win/pane 'wt) 'color inactive-win-color ] ] either exists? %bay.jpg [ bay: load %bay.jpg ][ view layout [ backdrop red title "Only for trully REBOLers!" h2 "You're not one of them -" white h3 "order your legendary %bay.jpg today;)" white ] quit ] view screen-face: layout/size [ backdrop bay 60.90.150 ; effect [fit gradcol 0x1 70.50.30] title join "SWIS (small window system) v." system/script/header/version button "welcome" [ deactivate-win tux-page: 1 append screen-face/pane reduce window/center 'welcome [ backdrop effect [fit gradcol 2x2 70.50.30] ;70.70.60 title "Welcome to SWIS" tux: text 180x80 {small window system by RUR} button "more..." 50x20 [ switch tux-page [ 1 [tux/text: {main code by Cyphre <[cyphre--volny--cz]>, gfx + add. code Rebolek <[weirddream--volny--cz]>, written in 2000} tux-page: 2] 2 [tux/text: {SWIS has basic windowing functionality based on VIEW.} tux-page: 3 ] 3 [tux/text: {You can resize windows, close or hide them. You can remove them or make new windows.} tux-page: 4] 4 [tux/text: {You can use VID dialect for creating window layout} tux-page: 1] ] show tux ] ] [] show screen-face ] button "resizeable window" [ deactivate-win append screen-face/pane reduce window 'beautiful-picture-of-bay [] load %bay.jpg show screen-face ] button "feedback!" [ deactivate-win append screen-face/pane reduce window 'marconni [ backdrop 0.0.0 text "Write your comment!" aa: area 250x100 across snd: button "Send" 50x20 [ send [[cyphre--volny--cz][weirddream--volny--cz]] join "SWIS auto-comment^/" aa/text win-root: cl/parent-face/parent-face/parent-face close-win win-root/id append screen-face/pane reduce window/center 'thanks [ backdrop 0.0.0 effect [gradcol 0x1 150.150.255] h1 "Thank you for your comment!" 255.255.127 across tab cl: button "close me!" [win-root: cl/parent-face/parent-face/parent-face close-win win-root/id] ;this should be improved ] [] show screen-face ] cl: button "Cancel" 50x20 [win-root: cl/parent-face/parent-face/parent-face close-win win-root/id] ;this should be improved ] [] show screen-face ] button "shutdown" [ deactivate-win append screen-face/pane reduce window/center 'Shutdown [ backdrop effect [fit gradcol 2x2 70.50.30] ;70.70.60 h2 "Sure to shutdown SWIS?" 255.255.100 across pad 40 button "OK" 50x20 [unview/all quit] close: button "Cancel" 50x20 [win-root: close/parent-face/parent-face/parent-face close-win win-root/id] ;this should be improved ] [] show screen-face ] text 250.250.250 "Created on 50MHz Amigas (one killer 68060 and one mega-death 68030)" ] 512x384 ------------=_970653573-20028-0--