Bug 116416 - User defined attributes in Draw
Summary: User defined attributes in Draw
Status: NEW
Alias: None
Product: LibreOffice
Classification: Unclassified
Component: Draw (show other bugs)
Version:
(earliest affected)
unspecified
Hardware: All All
: medium enhancement
Assignee: Not Assigned
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: ImpressDraw-Enhancements
  Show dependency treegraph
 
Reported: 2018-03-15 10:30 UTC by mieszcz
Modified: 2019-01-26 09:57 UTC (History)
1 user (show)

See Also:
Crash report or crash signature:
Regression By:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description mieszcz 2018-03-15 10:30:05 UTC
Description:
Please add possibility to add user defined attributes into the objects on the screen in Draw.
This will allow usage of the draw to another purposes than presentations only.
I mean to use draw to define components for example of automation systems, and use it later for generating some data structures, object dependencies and so on.

Actual Results:  
Cannot create user defined attributes.

Expected Results:
I would like to have possibility to add user defined field of type selected, and set its value via some dialog window. 
Then this data should be saved into the document structure.


Reproducible: Always


User Profile Reset: No



Additional Info:


User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0
Comment 1 Regina Henschel 2018-03-15 11:54:56 UTC
The request is not clear to me. Can you please explain by an example, what do you want to see on the screen, how the user will interact with the object and what action should be performed. In addition, to which kind of objects do you want to add the new attributes? How do you expect the attributes are stored in the file? What shall happen in printing?
Comment 2 mieszcz 2018-03-15 12:18:12 UTC
OK. 
As example. I would like to use Draw to build a layout of an automation conveyor system. on the layout each object would represent an conveyor part. And for such conveyor part I would define several user attributes for example, type of the conveyor element, speeds, assignments into functional groups, and many other parameters.
So it would be good if user can define several attributes for each object, the attribute would be: The name, type, and value. And these attributes could be edited with an dialog box containing the list of attributes with their values.

After saving of such drawing, I would extract an XML file from the document to import the structure to another program, to build an model of such system, with all the associations. And on base of such model, I could build even a control program for such automation system, verify correctness of the model, and do many actions.

Right now I do similar things using calc. But using of graphic representation of the objects would improve such work. 
I see that some companies do it using MS visio. They create objects with defined sets of attributes, and using such objects, they can do many tasks.
Comment 3 Regina Henschel 2018-03-15 13:56:46 UTC
That would be a very ambitious project.

I have looked, whether ODF provides something that might be useful.

I have found an <form:generic-control> which in one hand has an attribute form:control-implementation which binds it to a rendering and on the other hand it has the needed attributes and child elements for to connecting to a database.

Or another way would be to use the <office:event-listeners> element to bind the graphic to a macro, so that you can do all the needed things in a macro. Such is currently possible for shapes in Impress and images in Writer. [I thought there is already a request for to have it in Draw, but I do not find it.]

Because it is unlikely that either of them will be implemented in a short term, you should make your drawings in Impress and use a macro there.

Nevertheless this it is a valid feature request and therefore I set it to new.
Comment 4 mieszcz 2019-01-26 09:57:40 UTC
It would be good, if such a user defined attributes would be accessible for groupped objects using the group. Something like that:

group:
      Object1
           UserAttr1
      Object2
           UserAttr1
           UserAttr2


access to these attributes using contruction like that:

userAttr(Object1.UserAttr1)
userAttr(Object2.UserAttr1)
userAttr(Object2.UserAttr2)