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

[REBOL] steel... update... of the week (for more advanced rebolers)

From: maximo::meteorstudios::com at: 23-Jun-2003 13:30

hello fellow rebolers... I hope I'm not bothering anyone... but I just wanted to drop a line saying that steel is proceeding as planned (in fact, maybe even ahead of schedule ;-). I have just put the finishing touches on the v1.0 liquid engine... one of the bulding block of the steel application and one of the basic modules you'll have free with steel. Its basically a notification engine which is not signal-centric, but rather data-centric. It now has integrated (and a little bit more flexible than stock) datatype conversion to-from individual nodes and the data master... I have been using liquid's ancestor for a month now and I'm having so much fun... as an example of how it changes the workflow, instead of defining an action function for your text fields, you connect them to a master, and then add an action function to a data handler, if you need it. Integrated to a ui, you can connect labels, menu items, buttons, all linked to that same master. Just by changing the data in the master (actually its more like peer-to-peer), all of the ui updates without you even having to know what is currently displayed on screen... the master keeps a tab of everyone linked to him and signals them to update. my code size has shrinked by half. Moreover, I can build such dynamic setups that its scary, cause its practically free. Anyone who has used BOOPSI before (like I've said in the past, I've used many obscure systems )will understand a little of how it works. BUT liquid is a zillion times more fun to use and is extremelly friendly (a natural reflection of rebol). here is a short code snippet: ------------------------------------------------------ ------------------------------------------------------ rebol [] liquid: open-library 'liquid 1.0.0 ;---- ; create a liquid pipe network (the master) pipe: liquify liquid/pipe [] ;liquify replaces make ;---- ; create a vid layout vidblk: layout [ stylize liquid-steel below sheet-metal ; the default steel backdrop tmp: text do [ tmp/attach pipe] tmp: field 200 do [ tmp/attach pipe tmp/fill "START NAME:" ] tmp: button [view/new layout [tmp: button [unview] do [tmp/attach pipe]]] do [ tmp/attach pipe ] ] recipient: liquify liquid/recipient [ --valve--: pipe ; liquify has an init function which checks if --valve-- was set. fill-action: function [data user-data][ write %./save.txt data ] ] view vidblk ------------------------------------------------------ ------------------------------------------------------ Pressing the first window's button would open new windows which have a button labeled to the string set in the pipe. The tmp/fill call, fills the pipe with data (a.k.a. liquid) ("START NAME:" string!). Also note that the tmp/fill call occurs before the button's attach and it's label will still be set to "START NAME:". Changing the value in the text field will change the label of ALL text displayed in all windows. and we only had to allocate two variables in our code (tmp and pipe). We don't even have to create any action functions to update the ui. the recipient is an object which will get called each time the pipe's liquid will change (by any means). So, that when you fill-in the pipe with new data, you will also automatically save the setup! there's more, but I wanted to keep the mail short... (well, sort of ;-) some of you have had a taste of the glass-ui others know that I am obsessed with dynamicity this was just a short mail elaborating on the kind of tool that you all should expect in STEEL. If you have comments, concerns or requests about steel, it is the right time to do so, I've got my hands dirty... I'll be glad to add or integrate any tool in steel. (who knows, maybe its already planned ;-) I'm even thinking of integrated CVS and stuff like that... so no feature should seem far fetched. that's all folks. -max ----------- meteor Studios, T.D. ----------- Strong enough for a man, but made for a woman