[UI] ToolBuilder

Colin Putney cputney at wiresong.ca
Sun Sep 9 06:51:27 UTC 2007


On Sep 8, 2007, at 9:35 PM, tim Rowledge wrote:

>> However, by fileout, I really meant "snapshot in a Monticello
>> repository". I can easily snapshot and version code, but not
>> anything else using the supported tools that I know of.
> Good point. I don't know the answer to that either. I'd guess that =20
> it wouldn't be to difficult to make MC handle binary files but it =20
> might be harder to make sure the tools don;t go nuts; diffing =20
> binary files is often pointless unless you decode them before the =20
> comparison. I've cc:d Colin and perhaps he can offer some opinion?

No need to cc, I'm on the list. :-)

It wouldn't be that hard to extend MC to allow it to store arbitrary =20
byte arrays along with the code. The hairiest bit would be defining =20
where these things live in the image and arranging for them to have =20
identity so that MC can compare what's in the package with what's in =20
the image and make changes if necessary. MC doesn't do any =20
intelligent diffing between two versions of the same resource - =20
method, class definition or whatever - it just presents the two =20
versions and lets the developer choose which one he wants.

On the other hand, it's probably even easier just to store bytes =20
inside methods the way we've been doing forever - sending fonts and =20
icons out in the update stream, for example. I'm doing that now to =20
manage web resources in OmniBrowser - Javascript, CSS and images. I =20
have some code that takes a Form and compiles it into a method that =20
looks like this (modulo line wrapping by my email client):

arrowUp
	^ MIMEDocument
		contentType: 'image/png'
		content:

'=89PNG
=1A
=00=00=00
IHDR=00=00=00=0C=00=00=00=0C=08=03=00=00=00a=AB=AC=D5=00=00=03=00PLTE=91=CC=
]=8F=C3h=92=CC^=8E=CCR=95=D3W=98=D6Y=8F=CCS=8A=C4X=20
{=ADYb=8ED=FF=FF=FF=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=20
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=20
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=20
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=20
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=20
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=20
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=20
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=20
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=20
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=20
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=AF=
=DEfE=00=00=01=00tRNS=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=FF=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=20
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=20
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=20
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=
=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=00=20
=00=00=00=00d2s=16=00=00=00BIDATx^e=CEQ=0E=800=08=03=D0n:=B5=E5=FE=F7=15=88=
=84=C4=F5=07^R=12`=D6=81m=90=1A"U=10=F1=A4=90=FB=9Aw=08=D1=20
=E19=18M=87=C4=0B=F4=F1=DD=1C=A8=9B,62=FF=0F^=B7q=05=8F3=F7J=C0=00=00=00=00=
IEND=AEB`=82'


Text files are similar, and I use Lukas' FTP server to let me edit =20
them with a conventional text editor.

Given a way to serialize an arrangement of widgets and then =20
rematerialize them, it should be pretty straightforward to store that =20=

as source code.

Colin



More information about the UI mailing list