I'm evaluating a minimal check-in/check-out feature that would be layer based. The project i'm working on involve multiple documents, multiple layers and ''composition'' documents that are using layers from the master documents to create new master documents.
I cant give too much details, but there is definitively a need to track change on a more finer grain than just document level. In a very general way, my requirements would be something like this:
- Give a visual feeback to the user as for the Layer status and info (is locked, revision version, type, id)
- Listen to layer selection/layer modification attempt. Update visual status. Have a dialog for check-in/check-out.
I have evaluated quite a few things so far and i havent found a really solid solution:
A exemple of problem i stumbled on while looking for solutions:
The locking scheme of photoshop is giving me some problems as it cant manage the lock status of a child independently of parent layer lock status. There is some behavior that could be considered inconsistent like this one:
- Lock child layer
- Lock parent layer
You can unlock the child layer (regardless of parent status), but you cant lock it back (as the parent is locked). There is a similar problem with layer coloring as it also a non-colored child will inherit from parent coloring status wich make it very hard to use layer coloring to help the user ''spot'' some type of layer (in my project, the layer happened to be ''group'' layer wich are nested, making the coloring confusing!).
[Side note: I did some exploration with Indesign SDK and it seem to have a more open API for system integrators.. but i can understand that the history of the product and market has in alot of ways made this a ''must''.]
I will have very probably to revert to layer naming to indicate my own ''locking'' status. (Communication with database/system to keep track of this status in regard to the document id is not a problem at this point.)
I have looked at the ScriptEventListener first to detect for layer selection. The problem is that the listener receive a generic select event for alot of objects and just start a script without passing parameter on the object that was selected.
I have the impression that using the SDK i could know that the Select event has been generated for a layer object (i will try this with the listener sample in SDK when i will have resolved my Codewarrior licence bug), but i have read on the forum that another user was trying to listen to draw event without success (has been commented out in the piterminology.h file... So it looks like i would not be able to prevent a user to modify a layer... (unless playing with history??).
Anyway, i know the description here is quite vague and generic, but i would be curious to know if there is some other users that have worked on similar problem or know well the api if they have any impressions or comments. I'm aware of my own limitations.. but maybe i'm trying to do something that would be hard even for expert developper??
Subscribe to:
Post Comments
(Atom)
No comments:
Post a Comment