Alex,

> > I just noticed today that I can't connect objects in different layers.
> > You can't even change an object's layer.  You have to cut it and paste
> > it.  Is this correct?
> 
>  That you can't connect between layers is not an accident. That was a
> design decision we(I) took when implementing layers. The internal
> complexity and efficiency is much better when the layers are separated. It
> also is less confusing for the user, and i feel that not much power is
> removed from the user.

This is a huge incompatibility with Visio, and I disagree with you on it
removing only a little power from the user.  Maybe you haven't used that
feature in Visio, but people who are doing very complex diagrams really
appreciate being able to organize their diagrams with layers that let
you make connections between them.

I think that most of the useful power layers can provide has to do with
being able to connect objects in different layers.  A common way to use
them is to store an increasing levels of detail of the diagram in each
layer.  Without connections between layers, the contents of each layer
is disconnected from the layer it lays ontop of. Also, with connections
being one of Visio/Dia's strong suite, why would you want to hinder the
application's full potential?  If you do the interface right, you
minimize the complexity for the user (this is why Lars and I were having
such an intense discussion on it).

I cannot think of any useful diagram I would draw for my job that 
wouldn't have connections between layers.

If I were to update the code to make connections between layers possible,
would you integrate the changes?

Updating the DTD doesn't take much.  I see two different ways of doing 
it:

1. Add an optional attribute to connection to link to the layer name:

<!ATTLIST connection
   handle NMTOKEN #REQUIRED
   to IDREF #REQUIRED
   connection NMTOKEN #REQUIRED
   layer NMTOKEN #IMPLIED>
   ^^^^^^^^^^^^^^^^^^^^^^

2. Add an id to the layer element, and add an optional attribute to 
   connection to the layer id:

<!ATTLIST layer
   name CDATA #REQUIRED
   id IDREF #REQUIRED
   ^^^^^^^^^^^^^^^^^^
   visible (true|false) #REQUIRED >
<!ATTLIST connection
   handle NMTOKEN #REQUIRED
   to IDREF #REQUIRED
   connection NMTOKEN #REQUIRED
   layer IDREF #IMPLIED>
   ^^^^^^^^^^^^^^^^^^^^

Having the attribute be optional makes it so backwards compatibility
isn't broken.  I don't know how well libxml would handle having a new
id attribute for layer that doesn't exist in old diagrams, but the 2nd
way would make it so that changing the layer name doesn't cause all of
the inter-layer connections's layer attribute to have to change.

-Ben

-- 
Ben Hochstedler     http://www.mei.com  GE Marquette Medical Systems
[EMAIL PROTECTED]    Phone: 414-362-3317  Fax: 414-362-3389

Reply via email to