Alec Flett wrote:
John Anderson wrote:
itsName gets turned into something useless when a block gets copied to the soup, BlockName doesn't, so we should always be using BlockName.

So this explains the technical details of HOW blockName works, but it doesn't really answer my question: WHY do we actually need a blockName? I guess my question is if findBlockByName() itself can be eliminated by just using direct references to blocks rather than storing blockNames, do we need blockNames at all?
We started out with references and still use them in a bunch of cases like the way you propose. But that broke when blocks were copied and also trees come and go. Scripts also needed to refer to blocks and couldn't use references.

i.e. instead of
Block.update(parcel, "foo", blockName="foo")
BlockEvent.update(parcel, "fooEvent", blockName="fooEvent",    
                       dispatchEnum="SendToBlockByName",
                       destinationBlockName="foo")

how about

foo = Block.update(parcel, "foo")
BlockEvent.update(parcel, "fooEvent",
                       dispatchEnum="SendToBlockByReference",
                       destinationBlockReference=foo)

and instead of
block = Block.findBlockByName("foo")
why not some variant on
block = schema.ns(cpiaView).foo?

If having human-readable names in the soup is important, I can think of cleaner solutions there too... for instance what if we created //userdata/activeView/ and then when we copied stuff into the soup, then we'd put it in the full parcel/itsName, i.e.
I don't think human-readable names is the thing that motivated BlockNames. It was, as Bryan mentioned, more than  itsName needs to be unique in a repository directory.

//userdata/activeView/osaf.views.main.SideBar

This is all hinged on being able to actually eliminate findBlockByName though. That's really what I'm getting at...

Alec

Alec Flett wrote:
Working on the ZaoBao tutorial, and trying to explain the difference between a Block's blockName and its itsName, I'm starting to wonder: why do we have both?

I came up with two reasons:
- easy referencing/lookup of blocks by name.
  But schema.ns() provides easy access to any well-known object by name.
- event dispatching - to dispatch to an event with a given name.
  But again, schema.ns provides easy access.. and besides I think in many cases I think we'd be better off just using SendToBlockByReference and just directly referencing the block.

Thoughts? I can see how blockName was useful at one point, but I think now its purpose has been superceded by schema.ns().

Alec

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Open Source Applications Foundation "Dev" mailing list http://lists.osafoundation.org/mailman/listinfo/dev



_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

Open Source Applications Foundation "Dev" mailing list
http://lists.osafoundation.org/mailman/listinfo/dev

Reply via email to