Difference between revisions of "VDCT Bugs and Features Page"

From EPICSWIKI
(Removed rubbish that got added accidently at the end)
(Added Cosylab low priority features.)
Line 76: Line 76:
|}
|}


=== Major, EPICS V4 related improvements ===
=== Longer term (Maybe EPICS V4 related) improvements ===
# Define a interface that will allow VDCT to interact with other high-level tools - e.g. so it can query a relational database query for current field values. VDCT can give the link structure and the default value for fields, but the actual value should be able to be over-ridden by database values.  
{| BORDER="1"
# Allow a simple arithmetic syntax in macro expansion. e.g. if <tt>$(basenum)=10</tt> then <tt>$(basenum:+1)=11</tt>. I am happy for this to be restricted to a single operator and a pure number - arithmetic between two macros is probably too much. OTOH, I find Hex addition is appealing: e.g. if <tt>$(basename)=FF</tt> then <tt>$(basename:+0x3)=102</tt>, with the Hex result being generated because of the hex number being added. (BTW, I am not fussed about the syntax here - an alternative would be to borrow the Bash <tt>$(($(basename)+3))</tt> syntax as an alternative). This may not be V4, but the concept of substitution and macros may be a bigger issue.
!Feature!!Description!!Time Estimate (days) !! Suggested by
|-
|Debugging features||Start soft IOC on development machine from VDCT, Load database from VDCT directly to IOC, Add records on IOC (add and delete) with command from VDCT.||4||SNS
|-
|Enhanced print preview and editor||Print preview with advanced capabilities: customization of the legend, drawing of additional objects over the print preview picture (for comments and highlighting). Saving of print preview settings as print templates (make a standard template for the lab). The objects have a customizer for setting background, line style, etc.||15||Cosylab
|-
|Different shapes for different record types||Provide a predefined set of shapes (without an editor to make new ones). Time estimate covers the implementation of this functionality in VDCT. In addition, around 0.5 days of work is required to implement each new shape.||10||SNS
|-
|Allow drawing capabilities for template shapes.||Requires the task “Different shapes for different record types”. In this case the user has the ability to create new shapes. In this case the port info is located within the shape itself, which requires additional implementation. Again, around 0.5 days of work is required to implement each new shape.||5||SNS
|-
|Show direction of connections.||Isn't current direction indication not enough, see - http://www.cosylab.com/visualdct/builds/VisualDCT/2.4.1249/doc/MAN-VisualDCT_Users_Manual.html#record ; if not, maybe drawing arrows all through the line path is a better solution (as an option)?||1||SNS
|-
|Multiple windows||Ability to have several VDCT windows opened. Copy-paste is allowed between windows. Two options: o) the second VDCT is started from the first VDCT, allowing for JVM sharing - any problems with singleton classes? o) each VDCT in its own JVM, Copy-paste mechanism is changed that it works with seriazable strings ||5||Cosylab (Iztok Krapec)
|-
|Specifiable background color||Ability to customize the background color||0.5||Cosylab (Krapec)
|-
|Detachable preview window||At the moment, databe preview window can only be located on the top right part of the application. It should be possible to detach the window and have it in a separate dialog||2||Cosylab (Iztok Krapec)
|-
|Coloring of the records||It should be possible to change colors of the records||1||Cosylab (Iztok Krapec)
|-
|External query API||Define a interface that will allow VDCT to interact with other high-level tools - e.g. so it can query a relational database query for current field values. VDCT can give the link structure and the default value for fields, but the actual value should be able to be over-ridden by database values.  
|-
|MACRO enhancements||Allow a simple arithmetic syntax in macro expansion. e.g. if <tt>$(basenum)=10</tt> then <tt>$(basenum:+1)=11</tt>. I am happy for this to be restricted to a single operator and a pure number - arithmetic between two macros is probably too much. OTOH, I find Hex addition is appealing: e.g. if <tt>$(basename)=FF</tt> then <tt>$(basename:+0x3)=102</tt>, with the Hex result being generated because of the hex number being added. (BTW, I am not fussed about the syntax here - an alternative would be to borrow the Bash <tt>$(($(basename)+3))</tt> syntax as an alternative). This may not be V4, but the concept of substitution and macros may be a bigger issue.
|}


=== Capfast compatibility ===
=== Capfast compatibility ===
Line 86: Line 109:


=== Wishful thinking enhancements ===
=== Wishful thinking enhancements ===
# More generally, improve the wire positioning algorithm.... This is a big topic and needs thought. However, I don't believe people like the way it is at the moment. I am willing to work on a definition for this.
# More generally, improve the wire positioning and shape algorithm.... This is a big topic and needs thought. However, I don't believe people like the way it is at the moment.
# Provide an "auto-placement" function, that when reading in non VDCT databases tries to place all records to 1) eliminate the overlap of records and 2) to minimize the crossing of links (auto-routing).   
# Provide an "auto-placement" function, that when reading in non VDCT databases tries to place all records to 1) eliminate the overlap of records and 2) to minimize the crossing of links (auto-routing).   
# The merging of the concepts of an off-page input and a macro is confusing. I am not sure whether this is a problem, just thought I'd raise it.
# The merging of the concepts of an off-page input and a macro is confusing. I am not sure whether this is a problem, just thought I'd raise it.

Revision as of 16:03, 10 June 2005

Bug fixes

  1. The addpath command in the dbd file is interpreted as specifying relative paths to be concatenated with the absolute paths specified in the path command. In fact, the definition of addpath in EPICS is that they are just additional paths. (I think the only reason for doing it this way was there wasn’t the syntax to do path “${path}:/new/directory/here”. (Note: The addpath functionality as implemented is potentially useful, but is wrong – it should be implemented as a different command and built into dbExpand).
  2. When connecting more than one wire to a macro, the macro always reverts to the default orientation. It should be oriented in the natural direction for the majority of the wires.
  3. Fix problems with undo/redo. Sometimes when you undo a move the objects don’t go back in the same place.
  4. Dragging multiple objects sometimes ends up with some objects moving a different distance than others. This seems to be related to objects changing their snap point at different times, but if all objects start off snapped to grid, then they should all change their snap point at the same time. This problem also results in horizontal lines being non-horizontal after a move, since the endpoints snap at different times.
  5. Near-vertical wires shouldn’t get an awkward kink in them when you add a connection anchor. This isn’t intuitive.
  6. When some fields are marked as not visible as connection points in a template instantiation in a hierarchy, they seem to be hidden under a visible connection point and come to the front when the cursor hovers over them. Then when you add a connector, the connector doesn’t get added to the visible wire and connection point, but to the hidden one.
  7. Wire anchor connectors that are connected to a template instantiation in a hierarchy don’t get preserved through a save/restore cycle.
  8. The font used for the name of a template instantiated in a hierarchy is too large, IMHO.
  9. The SCAN field doesn’t show up as an allowable input variable when trying to connect to a record from a hierarchical port. You can work around this by connecting from another’s record output link to a SCAN field is to make the SCAN visible as a connection anchor, then connecting the hierarchical port, then deleting the temporary connection.
  10. You can’t add a connection anchor point to a wire connecting a record field and an external port or macro. Currently, this isn't possible because you need to click on the link field in the record to add a connector, but these wires don't have a link field.
  11. VDCT (build 1256) breaks for Mac OS X users if they upgrade to MacOS 10.4. This happened on two machines consistently. It works on Mac OS 10.3.x. The error messages and Java version are:
 
shoaf@strmeng1 201> vdct
Loading VisualDCT v2.4 build 1256...
 
java(5397,0x1804600) malloc: *** error for object 0x3a9f60: incorrect checksum for freed object - object was probably modified after being freed, break at szone_error to debug
java(5397,0x1804600) malloc: *** set a breakpoint in szone_error to debug
java(5397,0x1804600) malloc: *** error for object 0x3a9f60: incorrect checksum for freed object - object was probably modified after being freed, break at szone_error to debug
java(5397,0x1804600) malloc: *** set a breakpoint in szone_error to debug
  
o) Usage: java com.cosylab.vdct.VisualDCT [<DBDs>] [<DB>]
 
shoaf@strmeng1 202> java -version
java version "1.4.2_07"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_07-215)
Java HotSpot(TM) Client VM (build 1.4.2-50, mixed mode)

Enhancements

Higher Priority Features

Feature Description Time Estimate (days) Suggested by
Spreadsheet view and editor for records and templates Provide a spread sheet view for the records. Provide one table for each record and tempate type. The tables should be on a tabbed pane - one table per tab. The table should have one record or template instance per row. The columns are: record or template name, followed by all the fields. All the cells are editable. For ENUMS use combos - reuse implementation of renderers and editors from the property inspector. It should be customizable which fields to display, the settings for this are saved on the level of a vdb file. In the first approximation, all the fields that are seen in the property inspector (these are all the fields that can be edited) should be displayed. 15 SLAC (Bob Dalesio)
Debug plugin and hierarchies Make debug plugin work on hierachical databases (now it works only on flat databases). 5 SNS
Generate files with .template extension. At present, if you define something using $(<name>) and don't define <name>, it shows up the .db as $(<name>). It should be possible to call the generated file <filename>.template to use with a substitution file. (Actually, if a .db is generated with $(<name>), that might warrant a warning.) 3 SNS
If dbd not present, DTYP information is gone If dbd is not found by the db any more (i.e. it was moved elsewhere), VDCT comments out the existing DTYP fields for the entire database and leaves it like this even it the dbd is added again. VDCT should not comment them out, it should only provide a warning 1 Cosylab (Gasper Jansa)
Disable a record It should be possible to disable a record. When a file is saved, the disabled records are commented out in the db file. Disabled records should be marked clearly in the GUI. 1 Cosylab (Gasper Pajor)
Cloning a template Ability to quickly do a "clone" of the template, of course with another (file)name - this seems a simple & clean solution for the proposed feature: “Allow descent into a template file and rename it without renaming all of the top-level templates. Allow a way to choose which top-level instantiations will use the new file.” Cloning serves part of the purpose, but I also need to be able to morph some of the old template instances from the old template to the new one. 2 SNS
Make it easier to grab connectors inside objects. Allow you to select lines and wire segments by clicking on the line, not just the anchor. I can't see the connector until I get lucky and happen to mouse directly over it. 0.2 SNS
Allow connections via labels just outside the record Instead of having a connection that snakes all around a complicated diagram, just connect to a tab with a label ("A", perhaps) with a corresponding tab elsewhere on the diagram. 2 SNS
Read appInclude.dbd files with #include's Using a locally referenced RELEASE file to find the include files. "Relatively referenced" means ../../configure/RELEASE. (Other proposals with a similar goals are to add an environment variable search path for .vdb files used in the hierarchy so you can store useful modules in a central location, plus to respect the EPICS_DB_INCLUDE_PATH in dbd file expansion.) 2 SNS
Dialog with a list of records in a template In case of a hierarchical template, the representation of all the records should be a tree 2 Cosylab (Krapec)
Substitution file editor Make an editor for substitution files. Substitution file has a link to the template file. Every time a subs file is edited, search for all macros in the referenced template and if new macros are found, ask whether they should be added to subs file. Another option is to put some macros into "ignore list", saved in a substitution file as a comment. Provide a simple table to edit subs file values. 10 Cosylab (Igor Verstovsek)
Display less info at small zooms When zoom level < 75%, do not display all the info about the fields (it is not readable anyway because the font is too small). Display just the Record name and type with in a larger font). 2 Cosylab (Gasper Jansa)
If too long, display only part of record name If the name of the record is too long, the font to display becomes too small and unreadable. In this case, display just the last n letters of the record, where n is set to some meaningful value or is customizable. 1 Cosylab (Iztok Krapec)
Save on traverse Implement an option to save the current file if the file is changed and you are traversing the hierarchy tree. At the moment you can only elect: to not save then traverse, or to cancel the traverse. We would like to save then traverse.
Eliminate steps in wires Eliminate all the small, fractional grid size steps in wires going to off-page connectors and objects. The best way to do this is to ensure that if an object is snapped to the grid, then all anchors on the object are also are snapped to the grid (i.e. are on one of the horizontal lines of the grid).
Hierachy delimiters Enable more than one delimiter when generating a single capfast-style hierarchy. This may need to be discussed more widely since it may impact the EPICS V3.15 hierarchy. However, it recognises that not everyone has chosen a single hierarchy delimiter (Diamond starts off with a – delimiter and changes it to : after a certain depth, mores the pity).
Borders Allow drawing borders (just like the borders around mechanical and electrical engineering drawings) which have author, id, name and change blocks. They will consist of lines, rectangles and text blocks, but no records. Once merged, the block should remain as a single block but, ideally, the text should be editable. (/These should be implemented as drawings you can merge in with an existing drawing./ This could possibly be done by adding a more comprehensive functionality to merge drawings. It might be done by allowing access to the include statement, but making included objects largely read-only, so the include statement remains in the .vdb file, instead of getting expanded)
Resize drawing objects Allow you to change the size of drawing objects (lines and boxes).
Improve documentation. Have a tutorial/quick start guide available on line. (Could be produced by someone in the community.) Expand manual - the manual is good, but brief. It could use some expansion. Could be produced by someone in the community.

Longer term (Maybe EPICS V4 related) improvements

Feature Description Time Estimate (days) Suggested by
Debugging features Start soft IOC on development machine from VDCT, Load database from VDCT directly to IOC, Add records on IOC (add and delete) with command from VDCT. 4 SNS
Enhanced print preview and editor Print preview with advanced capabilities: customization of the legend, drawing of additional objects over the print preview picture (for comments and highlighting). Saving of print preview settings as print templates (make a standard template for the lab). The objects have a customizer for setting background, line style, etc. 15 Cosylab
Different shapes for different record types Provide a predefined set of shapes (without an editor to make new ones). Time estimate covers the implementation of this functionality in VDCT. In addition, around 0.5 days of work is required to implement each new shape. 10 SNS
Allow drawing capabilities for template shapes. Requires the task “Different shapes for different record types”. In this case the user has the ability to create new shapes. In this case the port info is located within the shape itself, which requires additional implementation. Again, around 0.5 days of work is required to implement each new shape. 5 SNS
Show direction of connections. Isn't current direction indication not enough, see - http://www.cosylab.com/visualdct/builds/VisualDCT/2.4.1249/doc/MAN-VisualDCT_Users_Manual.html#record ; if not, maybe drawing arrows all through the line path is a better solution (as an option)? 1 SNS
Multiple windows Ability to have several VDCT windows opened. Copy-paste is allowed between windows. Two options: o) the second VDCT is started from the first VDCT, allowing for JVM sharing - any problems with singleton classes? o) each VDCT in its own JVM, Copy-paste mechanism is changed that it works with seriazable strings 5 Cosylab (Iztok Krapec)
Specifiable background color Ability to customize the background color 0.5 Cosylab (Krapec)
Detachable preview window At the moment, databe preview window can only be located on the top right part of the application. It should be possible to detach the window and have it in a separate dialog 2 Cosylab (Iztok Krapec)
Coloring of the records It should be possible to change colors of the records 1 Cosylab (Iztok Krapec)
External query API Define a interface that will allow VDCT to interact with other high-level tools - e.g. so it can query a relational database query for current field values. VDCT can give the link structure and the default value for fields, but the actual value should be able to be over-ridden by database values.
MACRO enhancements Allow a simple arithmetic syntax in macro expansion. e.g. if $(basenum)=10 then $(basenum:+1)=11. I am happy for this to be restricted to a single operator and a pure number - arithmetic between two macros is probably too much. OTOH, I find Hex addition is appealing: e.g. if $(basename)=FF then $(basename:+0x3)=102, with the Hex result being generated because of the hex number being added. (BTW, I am not fussed about the syntax here - an alternative would be to borrow the Bash $(($(basename)+3)) syntax as an alternative). This may not be V4, but the concept of substitution and macros may be a bigger issue.

Capfast compatibility

  1. Enable the Capfast converter to recognise Capfast macros. The are implemented via a horrible method of having a setX property (where X is any character). However, it would be nice if these properties were correctly recognised as macros.
  2. Enable the Capfast converter to use the Capfast wire position points as hints as to where to place the vdct wires. The wires should at least have about the same number of segments.

Wishful thinking enhancements

  1. More generally, improve the wire positioning and shape algorithm.... This is a big topic and needs thought. However, I don't believe people like the way it is at the moment.
  2. Provide an "auto-placement" function, that when reading in non VDCT databases tries to place all records to 1) eliminate the overlap of records and 2) to minimize the crossing of links (auto-routing).
  3. The merging of the concepts of an off-page input and a macro is confusing. I am not sure whether this is a problem, just thought I'd raise it.
  4. Deprecate the group concept. I suspect the only people who use groups will want to move onto separate file hierarchies when they move to bigger systems? It seems to be a dead end - a nice idea, but not what I want. (I know this is controversial because some people use groups...)
  5. Visualization of the process chain (an EPICS database simulator)
  6. Show links between groups (display a group as a "meta-record") display external links also in the "group" displays. (Editors note: I think this is has really been implemented in hierarchy implementation, but I have it here because it came from the old VDCT page).