Difference between revisions of "VDCT Bugs and Features Page"

From EPICSWIKI
(Added consolidated list of bugs and features)
m (Fixed table syntax)
Line 30: Line 30:
!Bug # !! Name !! Bug or Feature !! Description !! Time Estimate (days) !! Proposed by !! Priority !! Comment   
!Bug # !! Name !! Bug or Feature !! Description !! Time Estimate (days) !! Proposed by !! Priority !! Comment   
|-
|-
|1021 || Make a non-modal property dialog as a separate tiled or floating window || Feature || As it is e.g. in Word for setting diverse properties When a record is selected, it's properties are shown in this windows; If several records are selected, only the properties that are common to all are shown and by entering a value, it is applied to all records; Two-way editing: if a new link is entered in the property sheet, it is also displayed on the canvas. This is very useful for people working with two screens, so they don't have to scroll around the canvas || 3 || 0 || BESSY || 0 || Do not understand. If I add  an inspector a feature of point 3, all this will be covered. Is this true? Estimate for point 3 given (for inspector).
|1021 || Make a non-modal property dialog as a separate tiled or floating window || Feature || As it is e.g. in Word for setting diverse properties When a record is selected, it's properties are shown in this windows; If several records are selected, only the properties that are common to all are shown and by entering a value, it is applied to all records; Two-way editing: if a new link is entered in the property sheet, it is also displayed on the canvas. This is very useful for people working with two screens, so they don't have to scroll around the canvas || 3 || 0 || BESSY || Do not understand. If I add  an inspector a feature of point 3, all this will be covered. Is this true? Estimate for point 3 given (for inspector).
|-
|-
|1 || Spreadsheet view and editor for records and templates || Feature || Provide a spread sheet view for the records. Provide one table for each record and template 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) || 0 || If multiple record types are selected, the inspector could display the intersection set of available editable fields.  
|1 || Spreadsheet view and editor for records and templates || Feature || Provide a spread sheet view for the records. Provide one table for each record and template 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) || 0 || If multiple record types are selected, the inspector could display the intersection set of available editable fields.  
Line 36: Line 36:
|2 || Improve documentation. || Feature || 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. ||  || Various || 0 || Improve the documentation from the user point of view. This may be done by a separate contract   
|2 || Improve documentation. || Feature || 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. ||  || Various || 0 || Improve the documentation from the user point of view. This may be done by a separate contract   
|-
|-
|12121  || Addpath command functionality || Bug || 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). || 0.25 || Nick Rees (Diamond) || 1 ||   
|12121  || Addpath command functionality || Bug || 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). || 0.25 || Nick Rees (Diamond) || 1 ||  ||
|-
|-
|12369  || Import of databases doesn't work || Bug || If you try and import a database into another database it simply doesn't work. || 0.25 || Nick Rees (Diamond) || 1 ||  
|12369  || Import of databases doesn't work || Bug || If you try and import a database into another database it simply doesn't work. || 0.25 || Nick Rees (Diamond) || 1 ||||
|-
|-
|APS1 || Hide value on copied records || Bug || When a record is copied, the setting "Hide value of valid links", and per-field hide-value settings made in Inspector are not honored until the Settings dialog is called up and put away, or the file is saved and reopened. || 0.25 || APS (David Kline) || 1 ||  
|APS1 || Hide value on copied records || Bug || When a record is copied, the setting "Hide value of valid links", and per-field hide-value settings made in Inspector are not honored until the Settings dialog is called up and put away, or the file is saved and reopened. || 0.25 || APS (David Kline) || 1 || || 
|-
|-
|APS3 || Position of pasted record || Bug || When a record is pasted, it frequently is placed *far* off screen, so you have to zoom out, grab the record, drag it to near where you were working, and zoom back in. This doesn't always happen, and I haven't been able to figure out what triggers the behavior. || 0.25 || APS (David Kline) || 1 || The inconsistency is certainly unacceptable from a user interface point of view, but it may not be a true bug. Should be fixed and record should be pasted at the mouse focus.
|APS3 || Position of pasted record || Bug || When a record is pasted, it frequently is placed *far* off screen, so you have to zoom out, grab the record, drag it to near where you were working, and zoom back in. This doesn't always happen, and I haven't been able to figure out what triggers the behavior. || 0.25 || APS (David Kline) || 1 || The inconsistency is certainly unacceptable from a user interface point of view, but it may not be a true bug. Should be fixed and record should be pasted at the mouse focus.
|-
|-
|12122  || Macro orientation when connection more than one wire || Bug || 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. || 0.5 || Nick Rees (Diamond) || 1 ||  
|12122  || Macro orientation when connection more than one wire || Bug || 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. || 0.5 || Nick Rees (Diamond) || 1 || || 
|-
|-
|12123  || Issues when un-doing a move || Bug || Fix problems with undo/redo. Sometimes when you undo a move the objects don't go back in the same place. || 0.5 || Nick Rees (Diamond) || 1 ||  
|12123  || Issues when un-doing a move || Bug || Fix problems with undo/redo. Sometimes when you undo a move the objects don't go back in the same place. || 0.5 || Nick Rees (Diamond) || 1 || ||
|-
|-
|12129  || SCAN field is not a valid input when connecting from a port || Bug || 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. || 0.5 || Nick Rees (Diamond) || 1 ||  
|12129  || SCAN field is not a valid input when connecting from a port || Bug || 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. || 0.5 || Nick Rees (Diamond) || 1|| || 
|-
|-
|8596  || Bug in Visual DCT morph || Bug || If you morph a record to something and you do 'undo' afther, the record goes back to previous record type but fiedls that are common to both records type remain on record. That means that you have two DESC fields and two PINI ... This is only display issue becaiuse saved file is OK. If you reload the template problem disappears. || 0.5 || Gasper Jansa (Cosylab) || 1 ||   
|8596  || Bug in Visual DCT morph || Bug || If you morph a record to something and you do 'undo' afther, the record goes back to previous record type but fiedls that are common to both records type remain on record. That means that you have two DESC fields and two PINI ... This is only display issue becaiuse saved file is OK. If you reload the template problem disappears. || 0.5 || Gasper Jansa (Cosylab) || 1 ||  ||
|-
|-
|APS2 || Copied record set links || Bug || When a set of records with links is copied and pasted, all the new records are linked to records in the set from which they were copied. If the link is to a record not in the set being copied, this seems the right thing to do, but if it's to a record in the set, I can't imagine a case for which this would be the desired behavior. || 0.5 || APS (David Kline) || 1 ||   
|APS2 || Copied record set links || Bug || When a set of records with links is copied and pasted, all the new records are linked to records in the set from which they were copied. If the link is to a record not in the set being copied, this seems the right thing to do, but if it's to a record in the set, I can't imagine a case for which this would be the desired behavior. || 0.5 || APS (David Kline) || 1 ||  ||
|-
|-
|APS4 || Records move when db is saved || Bug || When a database is saved, records are sometimes moved around. I can't figure out what distinguishes records that get moved from those that don't, but the same recoords get moved consistently. || 0.5 || APS (David Kline) || 1 || Send us the database to reproduce and find a pattern (bug).   
|APS4 || Records move when db is saved || Bug || When a database is saved, records are sometimes moved around. I can't figure out what distinguishes records that get moved from those that don't, but the same recoords get moved consistently. || 0.5 || APS (David Kline) || 1 || Send us the database to reproduce and find a pattern (bug).   
|-
|-
|12126  || Problem with hidden fields || Bug || 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. || 1 || Nick Rees (Diamond) || 1 ||  
|12126  || Problem with hidden fields || Bug || 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. || 1 || Nick Rees (Diamond) || 1 || ||
|-
|-
|12124  || Objects change relative distances while being dragged together || Bug || 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. || 1.5 || Nick Rees (Diamond) || 1 || This (and 12123) seems to boil down to what internal position is stored for a component. I believe it should reflect what is displayed - so components which were last moved in snap mode should reflect the snapped position, but if you move an object in un-snapped mode it should reflect the un-snapped position. This is the most common model for drawing packages. Components should always be drawn at their internally stored position.
|12124  || Objects change relative distances while being dragged together || Bug || 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. || 1.5 || Nick Rees (Diamond) || 1 || This (and 12123) seems to boil down to what internal position is stored for a component. I believe it should reflect what is displayed - so components which were last moved in snap mode should reflect the snapped position, but if you move an object in un-snapped mode it should reflect the un-snapped position. This is the most common model for drawing packages. Components should always be drawn at their internally stored position.
|-
|-
|12127  || Wire anchors on templates are not preserved when saving || Bug || Wire anchor connectors that are connected to a template instantiation in a hierarchy don't get preserved through a save/restore cycle. || 1.5 || Nick Rees (Diamond) || 1 ||   
|12127  || Wire anchors on templates are not preserved when saving || Bug || Wire anchor connectors that are connected to a template instantiation in a hierarchy don't get preserved through a save/restore cycle. || 1.5 || Nick Rees (Diamond) || 1 ||||   
|-
|-
|12130  || Not possible to add a connection anchor point to a wire connecting a record field and an external port or macro || Bug || 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. || 1.5 || Nick Rees (Diamond) || 1 ||  
|12130  || Not possible to add a connection anchor point to a wire connecting a record field and an external port or macro || Bug || 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. || 1.5 || Nick Rees (Diamond) || 1 || || 
|-
|-
|8731  || VDCT: mess with the template links || Bug || When I create a template (hierarchies) and instantiate it in a bigger level template, I reorder links (macros, ports...) so that they look nice (left side, right side...). When I copy the template (CTRL+C, CTRL+V), my nice arrangement gets messed up. || 2 || Rok Sabjan (Cosylab) || 1 ||  
|8731  || VDCT: mess with the template links || Bug || When I create a template (hierarchies) and instantiate it in a bigger level template, I reorder links (macros, ports...) so that they look nice (left side, right side...). When I copy the template (CTRL+C, CTRL+V), my nice arrangement gets messed up. || 2 || Rok Sabjan (Cosylab) || 1 || || 
|-
|-
|11385  || Visual DCT breaks in Mac OS 10.4 || Bug || The last build available on the web site is not compatible with the recently released Mac OS 10.4. || 3 || Steve Shoaf (APS) || 1 ||  
|11385  || Visual DCT breaks in Mac OS 10.4 || Bug || The last build available on the web site is not compatible with the recently released Mac OS 10.4. || 3 || Steve Shoaf (APS) || 1 || || 
|-
|-
|6 || Save on traverse || Feature || 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. || 0.125 || Nick Rees (Diamond) || 1 || Trivial and useful. Only have to think about the correct default.   
|6 || Save on traverse || Feature || 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. || 0.125 || Nick Rees (Diamond) || 1 || Trivial and useful. Only have to think about the correct default.   
|-
|-
|11 || Improve printing || Feature || Omit wire anchors on printing.  || 0.25 || Nick Rees (Diamond) || 1 ||   
|11 || Improve printing || Feature || Omit wire anchors on printing.  || 0.25 || Nick Rees (Diamond) || 1 ||||   
|-
|-
|3 || If dbd not present, DTYP information is gone || Feature || 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. || 0.5 || Cosylab (Gasper Jansa) || 1 || This is really a bug. The database should not be corrupted just because the dbd file is not found.   
|3 || If dbd not present, DTYP information is gone || Feature || 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. || 0.5 || Cosylab (Gasper Jansa) || 1 || This is really a bug. The database should not be corrupted just because the dbd file is not found.   
Line 90: Line 90:
|10 || Borders || Feature || 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) || 5 || Nick Rees (Diamond) || 1 || The border can be drawn by the tools that are already implemented in VDCT. However, imports of other vdb files currently doesn't work, and don't import graphics and text. There is also no way of grouping graphics and text so they are moved as one.
|10 || Borders || Feature || 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) || 5 || Nick Rees (Diamond) || 1 || The border can be drawn by the tools that are already implemented in VDCT. However, imports of other vdb files currently doesn't work, and don't import graphics and text. There is also no way of grouping graphics and text so they are moved as one.
|-
|-
|12296  || Problems with find feature in VisualDCT || Bug || "Find" feature in VDCT build 1257: Does not execute on "ENTER" key. (You have to click the start button.). Sometimes doesn't find records that actually exist (but I couldn't reproduce this on Windows). I think it should be accessed by clicking on the third tool bar button - but this button is permanently greyed out. || 0.125 || Matt Rippa (JAC) || 2 ||  
|12296  || Problems with find feature in VisualDCT || Bug || "Find" feature in VDCT build 1257: Does not execute on "ENTER" key. (You have to click the start button.). Sometimes doesn't find records that actually exist (but I couldn't reproduce this on Windows). I think it should be accessed by clicking on the third tool bar button - but this button is permanently greyed out. || 0.125 || Matt Rippa (JAC) || 2 || ||
|-
|-
|12128  || Font size for template name too large || Bug || The font used for the name of a template instantiated in a hierarchy is too large || 0.25 || Nick Rees (Diamond) || 2 ||  
|12128  || Font size for template name too large || Bug || The font used for the name of a template instantiated in a hierarchy is too large || 0.25 || Nick Rees (Diamond) || 2 || || 
|-
|-
|12125  || Awkward kink in wires when a connector anchor is added || Bug || Near-vertical wires shouldn't get an awkward kink in them when you add a connection anchor. This isn't intuitive. || 0.5 || Nick Rees (Diamond) || 2 ||  
|12125  || Awkward kink in wires when a connector anchor is added || Bug || Near-vertical wires shouldn't get an awkward kink in them when you add a connection anchor. This isn't intuitive. || 0.5 || Nick Rees (Diamond) || 2 || || 
|-
|-
|5037  || Printing issues || Bug || Printing is a serious problem.  There seems to be no way to print a moderate size database.  The large, flatbed printers do not show as printer options.  The options seem to be the same for all printers, even though the printers have different capabilities.  When printing to smaller paper, the text is not readable or not there. || 3 || Ned Arnold (APS) || 2 ||  
|5037  || Printing issues || Bug || Printing is a serious problem.  There seems to be no way to print a moderate size database.  The large, flatbed printers do not show as printer options.  The options seem to be the same for all printers, even though the printers have different capabilities.  When printing to smaller paper, the text is not readable or not there. || 3 || Ned Arnold (APS) || 2 || ||
|-
|-
|14 || Visual cue when making links || Feature || When creating a link between two records, you use the context menu to select which link you're setting, at which point the pointer really ought to change shape to indicate that it's expecting you to click on the destination record. || 0.25 || Andrew Johnson (APS) || 2 || Reasonable suggestion   
|14 || Visual cue when making links || Feature || When creating a link between two records, you use the context menu to select which link you're setting, at which point the pointer really ought to change shape to indicate that it's expecting you to click on the destination record. || 0.25 || Andrew Johnson (APS) || 2 || Reasonable suggestion   
Line 102: Line 102:
|15 || Highlight which record is inspected || Feature || Select or highlight the corresponding record when the Inspector selects or changes records. || 1 || Matt Rippa (JAC) || 2 || An additional suggestion is to add a "Centre" button to the Inspector window which, when pressed centers the record on the screen.
|15 || Highlight which record is inspected || Feature || Select or highlight the corresponding record when the Inspector selects or changes records. || 1 || Matt Rippa (JAC) || 2 || An additional suggestion is to add a "Centre" button to the Inspector window which, when pressed centers the record on the screen.
|-
|-
|10333  || On small zoom the records should blow up to become readable || Feature || I'm new to VDCT but I think it would make it much easier to follow a database if you could zoom way out and as you rolled the mouse over a record it blew up to become readable . Similar to the way a mac does the icon bar. This way you could see the flow of links without zooming in and out all the time. || 1 || Rich Diviero (APS) || 2 ||  
|10333  || On small zoom the records should blow up to become readable || Feature || I'm new to VDCT but I think it would make it much easier to follow a database if you could zoom way out and as you rolled the mouse over a record it blew up to become readable . Similar to the way a mac does the icon bar. This way you could see the flow of links without zooming in and out all the time. || 1 || Rich Diviero (APS) || 2 || || 
|-
|-
|13 || Morph a template || Feature || Add the ability to morph a template in the same way you can morph a record. || 1 || Nick Rees (Diamond) || 2 || Reasonable suggestion   
|13 || Morph a template || Feature || Add the ability to morph a template in the same way you can morph a record. || 1 || Nick Rees (Diamond) || 2 || Reasonable suggestion   
Line 134: Line 134:
|20 || Debug plug-in and hierarchies || Feature || Make debug plug-in work on hierarchical databases (now it works only on flat databases). || 5 || SNS || 4 || This is a good idea, but it is unrelated to making VDCT a good visual database editor. Hence a longer term feature
|20 || Debug plug-in and hierarchies || Feature || Make debug plug-in work on hierarchical databases (now it works only on flat databases). || 5 || SNS || 4 || This is a good idea, but it is unrelated to making VDCT a good visual database editor. Hence a longer term feature
|-
|-
|26 || Enhanced print preview and editor || Feature || 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 || 4 ||  
|26 || Enhanced print preview and editor || Feature || 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 || 4 || ||
|-
|-
|191 || Non-heirarchical off page links/page formatting || Feature || Instead of making a large canvas and printing many tiled pages, have a non-heirachical link to another page so you don't have to glue many pages together after printing out a big database on A4. Each non-heirarchical page can be opened in its own window, instead of having one huge canvas Each link that goes out of the page should be marked automatically by VDCT || 20 || BESSY || 3 || This is a nice feature, but it is too big to implement at this time.
|191 || Non-heirarchical off page links/page formatting || Feature || Instead of making a large canvas and printing many tiled pages, have a non-heirachical link to another page so you don't have to glue many pages together after printing out a big database on A4. Each non-heirarchical page can be opened in its own window, instead of having one huge canvas Each link that goes out of the page should be marked automatically by VDCT || 20 || BESSY || 3 || This is a nice feature, but it is too big to implement at this time.
|-
|-
|25 || Debugging features || Feature || 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. ||  || SNS || 4 ||   
|25 || Debugging features || Feature || 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. ||  || SNS || 4 ||||   
|-
|-
|12294  || FLNK'ing not possible from stand alone record || Bug || It's possbile to get into a state where the FLNK option is not available when you right click a record. Certainly if the record is already FLNK'ed this is what you want. But sometimes there is a stand alone record and FLNKing is not an option in the popup. ||  || Matt Rippa (JAC) || 5 || For the moment, we'll assume that this is because FLNK is actually there, but hidden
|12294  || FLNK'ing not possible from stand alone record || Bug || It's possbile to get into a state where the FLNK option is not available when you right click a record. Certainly if the record is already FLNK'ed this is what you want. But sometimes there is a stand alone record and FLNKing is not an option in the popup. ||  || Matt Rippa (JAC) || 5 || For the moment, we'll assume that this is because FLNK is actually there, but hidden

Revision as of 13:49, 6 July 2005

Bugs

Please add bugs here and also email them to [[email protected]]. When they are definitely in the system they will be removed from this page.

Proposed Bug-Fix and Schematic Capture development package

A result of a poll of the community indicated that adoption would be far more widespread if the largest bugs were removed and work was done to upgrade VDCT's capability as a basic spreadsheet package. A consolidated list of bugs and feature requests have been drawn up and priorities assigned on this basis. Specifically, the priorities are:

Priority Meaning
0 Probably funded via another means
1 Functionality essential to a schematic capture tool - i.e. it would be seen as a bug in a traditional schematic capture tool
2 Useful functionality that improves VDCT as a database configuration tool
3 Useful functionality, but may require greater thought or co-ordination with EPICS V4 development
4 Potentially useful functionality, but not too essential to the core function of a DCT. Also irreproducible bugs
5 Functionality that is not required since the solution is already available or provided in another way.

Bearing this priority list in mind, we have decided to develop a package aimed at addressing priorities 1 and 2 only. It is interesting to note that even this limited package amounts to 41 work days, which is considerably larger tham most of the other VDCT development packages - highlighting that the devil is in the details.

The consolidated list of bugs and features is as follows:

Bug # Name Bug or Feature Description Time Estimate (days) Proposed by Priority Comment
1021 Make a non-modal property dialog as a separate tiled or floating window Feature As it is e.g. in Word for setting diverse properties When a record is selected, it's properties are shown in this windows; If several records are selected, only the properties that are common to all are shown and by entering a value, it is applied to all records; Two-way editing: if a new link is entered in the property sheet, it is also displayed on the canvas. This is very useful for people working with two screens, so they don't have to scroll around the canvas 3 0 BESSY Do not understand. If I add an inspector a feature of point 3, all this will be covered. Is this true? Estimate for point 3 given (for inspector).
1 Spreadsheet view and editor for records and templates Feature Provide a spread sheet view for the records. Provide one table for each record and template 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) 0 If multiple record types are selected, the inspector could display the intersection set of available editable fields.
2 Improve documentation. Feature 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. Various 0 Improve the documentation from the user point of view. This may be done by a separate contract
12121 Addpath command functionality Bug 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). 0.25 Nick Rees (Diamond) 1
12369 Import of databases doesn't work Bug If you try and import a database into another database it simply doesn't work. 0.25 Nick Rees (Diamond) 1
APS1 Hide value on copied records Bug When a record is copied, the setting "Hide value of valid links", and per-field hide-value settings made in Inspector are not honored until the Settings dialog is called up and put away, or the file is saved and reopened. 0.25 APS (David Kline) 1
APS3 Position of pasted record Bug When a record is pasted, it frequently is placed *far* off screen, so you have to zoom out, grab the record, drag it to near where you were working, and zoom back in. This doesn't always happen, and I haven't been able to figure out what triggers the behavior. 0.25 APS (David Kline) 1 The inconsistency is certainly unacceptable from a user interface point of view, but it may not be a true bug. Should be fixed and record should be pasted at the mouse focus.
12122 Macro orientation when connection more than one wire Bug 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. 0.5 Nick Rees (Diamond) 1
12123 Issues when un-doing a move Bug Fix problems with undo/redo. Sometimes when you undo a move the objects don't go back in the same place. 0.5 Nick Rees (Diamond) 1
12129 SCAN field is not a valid input when connecting from a port Bug 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. 0.5 Nick Rees (Diamond) 1
8596 Bug in Visual DCT morph Bug If you morph a record to something and you do 'undo' afther, the record goes back to previous record type but fiedls that are common to both records type remain on record. That means that you have two DESC fields and two PINI ... This is only display issue becaiuse saved file is OK. If you reload the template problem disappears. 0.5 Gasper Jansa (Cosylab) 1
APS2 Copied record set links Bug When a set of records with links is copied and pasted, all the new records are linked to records in the set from which they were copied. If the link is to a record not in the set being copied, this seems the right thing to do, but if it's to a record in the set, I can't imagine a case for which this would be the desired behavior. 0.5 APS (David Kline) 1
APS4 Records move when db is saved Bug When a database is saved, records are sometimes moved around. I can't figure out what distinguishes records that get moved from those that don't, but the same recoords get moved consistently. 0.5 APS (David Kline) 1 Send us the database to reproduce and find a pattern (bug).
12126 Problem with hidden fields Bug 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. 1 Nick Rees (Diamond) 1
12124 Objects change relative distances while being dragged together Bug 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. 1.5 Nick Rees (Diamond) 1 This (and 12123) seems to boil down to what internal position is stored for a component. I believe it should reflect what is displayed - so components which were last moved in snap mode should reflect the snapped position, but if you move an object in un-snapped mode it should reflect the un-snapped position. This is the most common model for drawing packages. Components should always be drawn at their internally stored position.
12127 Wire anchors on templates are not preserved when saving Bug Wire anchor connectors that are connected to a template instantiation in a hierarchy don't get preserved through a save/restore cycle. 1.5 Nick Rees (Diamond) 1
12130 Not possible to add a connection anchor point to a wire connecting a record field and an external port or macro Bug 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. 1.5 Nick Rees (Diamond) 1
8731 VDCT: mess with the template links Bug When I create a template (hierarchies) and instantiate it in a bigger level template, I reorder links (macros, ports...) so that they look nice (left side, right side...). When I copy the template (CTRL+C, CTRL+V), my nice arrangement gets messed up. 2 Rok Sabjan (Cosylab) 1
11385 Visual DCT breaks in Mac OS 10.4 Bug The last build available on the web site is not compatible with the recently released Mac OS 10.4. 3 Steve Shoaf (APS) 1
6 Save on traverse Feature 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. 0.125 Nick Rees (Diamond) 1 Trivial and useful. Only have to think about the correct default.
11 Improve printing Feature Omit wire anchors on printing. 0.25 Nick Rees (Diamond) 1
3 If dbd not present, DTYP information is gone Feature 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. 0.5 Cosylab (Gasper Jansa) 1 This is really a bug. The database should not be corrupted just because the dbd file is not found.
4 Make it easier to grab connectors inside objects. Feature 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.5 SNS 1 Functionality problem! It is difficult to grab a connector if it lays under a bigger object (While the selected object is moved to front it covers the wire and connector)
5 Read appInclude.dbd files with #include's Feature 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.) 0.5 SNS 1 The EPICS_DB_INCLUDE_PATH environment variable cannot be read by all versions of Java. Proposed that the necessary information can be passed as a parameter from the command line, and can be generated in the startup script. (The estimated time to do this any other way is large)
8 Move text on macros Feature It should be possible to place the text on macros to be on the side opposite the wire connection point 0.5 Nick Rees (Diamond) 1 Having the text on the side is useful when there is a whole line of macros stacked vertically.
12 Building Feature Make build from source easier and more reliable. (Note: This now seems to be fixed, but could be better documented) 0.5 Philip Taylor (OSL) 1 It should be possible to build VDCT without access to the Common project. Build scripts for plug-ins and VDCT-Common should also exist.
7 Eliminate steps in wires Feature 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). 1 Nick Rees (Diamond) 1 Certain objects (eg. Macro) are not of the size of the grid - but the wire connection point should line up with other wire connection points.
9 More wiring issues Feature Do not draw lines over each other, mark connections clearly different from crossings, easier way to control routing manually. 1.5 Ralph Lange (BESSY) 1 There should be a dot where-ever two wires merge to become one
121 Control of which side a wire connects to a record Feature Need better way of controlling which side the link is coming out of. Sometimes I have difficulty getting the link to point the right way just adding new handles. 2 APS (David Kline) 1 Use Shift+right mouse button to change link direction. See related bug #12122. This is possible only if having more than one link connected, otherwise side is chosen by VDCT (but you can have control over it using wire anchors). It is not possible to handle all (everyone) wishes with automatical/manual layout. So I suggest to have automatic with manual override possible (this will require to add a additional info to the graphical data).
10 Borders Feature 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) 5 Nick Rees (Diamond) 1 The border can be drawn by the tools that are already implemented in VDCT. However, imports of other vdb files currently doesn't work, and don't import graphics and text. There is also no way of grouping graphics and text so they are moved as one.
12296 Problems with find feature in VisualDCT Bug "Find" feature in VDCT build 1257: Does not execute on "ENTER" key. (You have to click the start button.). Sometimes doesn't find records that actually exist (but I couldn't reproduce this on Windows). I think it should be accessed by clicking on the third tool bar button - but this button is permanently greyed out. 0.125 Matt Rippa (JAC) 2
12128 Font size for template name too large Bug The font used for the name of a template instantiated in a hierarchy is too large 0.25 Nick Rees (Diamond) 2
12125 Awkward kink in wires when a connector anchor is added Bug Near-vertical wires shouldn't get an awkward kink in them when you add a connection anchor. This isn't intuitive. 0.5 Nick Rees (Diamond) 2
5037 Printing issues Bug Printing is a serious problem. There seems to be no way to print a moderate size database. The large, flatbed printers do not show as printer options. The options seem to be the same for all printers, even though the printers have different capabilities. When printing to smaller paper, the text is not readable or not there. 3 Ned Arnold (APS) 2
14 Visual cue when making links Feature When creating a link between two records, you use the context menu to select which link you're setting, at which point the pointer really ought to change shape to indicate that it's expecting you to click on the destination record. 0.25 Andrew Johnson (APS) 2 Reasonable suggestion
15 Highlight which record is inspected Feature Select or highlight the corresponding record when the Inspector selects or changes records. 1 Matt Rippa (JAC) 2 An additional suggestion is to add a "Centre" button to the Inspector window which, when pressed centers the record on the screen.
10333 On small zoom the records should blow up to become readable Feature I'm new to VDCT but I think it would make it much easier to follow a database if you could zoom way out and as you rolled the mouse over a record it blew up to become readable . Similar to the way a mac does the icon bar. This way you could see the flow of links without zooming in and out all the time. 1 Rich Diviero (APS) 2
13 Morph a template Feature Add the ability to morph a template in the same way you can morph a record. 1 Nick Rees (Diamond) 2 Reasonable suggestion
16 Multiple windows Feature 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) 2 Enable copy/paste between different windows. Use MDI.
127 Fields with two connectors Value fields can only be linked to from one side, so if you have a database in which record A writes to record B, and record C reads from record B, there's no satisfactory way to show it. (gdct had "hooks" on both sides of target fields, and this was very helpful for complex databases.) 2 APS (David Kline) 2 This is a useful new feature
17 External query API Feature 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. ? Various 3 This can be implemented as a plug-in
18 MACRO enhancements Feature 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. Nick Rees (Diamond) 3 This is useful if you have to change all values. Only the "basenum" would be changed and all numbers would change. This has to be discussed with EPICS community!
19 File Format Feature Clarify the file format so the graphics information obeys a defined standard (I don't like embedding things in comments). Rationalise the various ways of template expansion across all EPICS tools. Develop sandards for storing meta-data (for graphics, archiver, alarm handler, high-level device interfaces etc). Nick Rees (Diamond) 3 Though it is a VDCT main feature to have only one file it is not good practice to store important information in the comments
8700 Port problem in VisualDCT Bug I really dont't know how to reproduce it, but I was doing port in variable.template and then I want to go one level up, and it crashed. It showed empty window afterwards and it didn't work to reload the file again. There is howerver one strange thing in this base from then on. It is in variables.template. One port is invisible and becomes invisible only if you focus on dol field of the related record. Unknown Gasper Jansa (Cosylab) 4 How to solve this, if not possible to reproduce. I got the same (if not that) report from SNS, but we failed to reproduce (after some additional fix).
22 Display less info at small zooms Feature 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). 0.5 Cosylab (Gasper Jansa) 4 Not an important function.
23 If too long, display only part of record name Feature 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. 0.5 Cosylab (Iztok Krapec) 4 Not an important function.
21 Disable a record Feature 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) 4 Not an important function.
24 Hierarchy delimiters Feature 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 recognizes 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). 1 Nick Rees (Diamond) 4 Not an important function.
27 Specifiable background color Feature Ability to customize the background color 1 Cosylab (Krapec) 4 There would be problems with printing since the default background print colour is white, not black.
29 Colouring of the records Feature It should be possible to change colours of the records 1 Cosylab (Iztok Krapec) 4 Again, ensuring there are no colour clashes is not so easy.
28 Detachable preview window Feature At the moment, database 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 1.5 Cosylab (Iztok Krapec) 4 Not very important but could be done.
20 Debug plug-in and hierarchies Feature Make debug plug-in work on hierarchical databases (now it works only on flat databases). 5 SNS 4 This is a good idea, but it is unrelated to making VDCT a good visual database editor. Hence a longer term feature
26 Enhanced print preview and editor Feature 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 4
191 Non-heirarchical off page links/page formatting Feature Instead of making a large canvas and printing many tiled pages, have a non-heirachical link to another page so you don't have to glue many pages together after printing out a big database on A4. Each non-heirarchical page can be opened in its own window, instead of having one huge canvas Each link that goes out of the page should be marked automatically by VDCT 20 BESSY 3 This is a nice feature, but it is too big to implement at this time.
25 Debugging features Feature 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. SNS 4
12294 FLNK'ing not possible from stand alone record Bug It's possbile to get into a state where the FLNK option is not available when you right click a record. Certainly if the record is already FLNK'ed this is what you want. But sometimes there is a stand alone record and FLNKing is not an option in the popup. Matt Rippa (JAC) 5 For the moment, we'll assume that this is because FLNK is actually there, but hidden
45 Printing problems Feature Print preview needs to be improved. Printing options such as "extents" where it prints the entire drawing, "window" where it prints an area you can choose with the mouse, or "display" where it prints whatever is on the screen would help. 0.75 APS (David Kline) 5 See related feature request #36. There is a workaround for both "Print extents" and "Print Selection" and "Print display" is the default.
42 Connection directions Feature Show direction of connections. 1 SNS 5 Isn't current direction indication 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)?
44 Preserve record link order on copy Feature When a record is copied, the order of the links is sometimes not preserved, so it may take many menu selections to make a copy that can be used. 1 APS (David Kline) 5 Probably a repeat of bug #8731 - except that relates to templates, not records.
34 Substitution file editor Feature 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. 5 Cosylab (Igor Verstovsek) 5 VDCT is not a template file editor. It provides a different model for template instantiation. Use a normal editor for this.
41 Allow drawing capabilities for template shapes. Feature 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 5 Not essential.
40 Different shapes for different record types Feature 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 5 Not essential.
43 Nicer record symbols Feature A record should be represented by an arbitrary polygon. Each record has a default shape, but it should be possible to change it. More important than changing the shape is the possibility to change the size of the polygon. This will allow the designer to create enough space for all links from/to this record. All links must be movable along the polygon outline. This will allow the designer to position all inputs on the left and all outputs on the right, for example 15 BESSY 5 This is similar to the two requests submitted by SNS for allowing different shapes for different record types. Hence, I have pencilled in a 15 day estimate. If this is correct, I think it should be funded separately if demand exists.
30 Generate files with .template extension. Feature 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.) SNS 5 You can manually type ".template" as the file extension, so you can effectively do this. I also want to focus on implementing the recursive hierarchy of VDCT, and this may become preferred over templates.
31 Cloning a template Feature 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. SNS 5 "Save as" provides 50% of the functionality required. The other 50% would come from providing the ability to morph a template.
32 Allow connections via labels just outside the record Feature 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. SNS 5 It is already possible to make a labeled connection.
33 Dialog with a list of records in a template Feature In case of a hierarchical template, the representation of all the records should be a tree Cosylab (Krapec) 5 Spreadsheet view solves this request as well.
35 Resize drawing objects Feature Allow you to change the size of drawing objects (lines and boxes). At minimum provide at least one set of small symbols so that more records fit onto one screen. Ralph Lange (BESSY) 5 The size of drawings can be changed by dragging the right bottom corner. It is not clear what is meant by one set of small symbols - this seems to be a reflection of a Capfast bias - VDCT has a different model for symbols.
36 Improve printing Feature print all, print current screen Ralph Lange (BESSY) 5 Printing is currently always "print current screen". To print all type Ctrl-A, Shift-space, to zoom all, then print.
37 Change record type Feature Ability to change a record type (i.e., calc to sub) where the values for common fields and the record name are retained. Stephanie Allison (SLAC) 5 This is done by "morph".
38 Quick Zoom Feature Full View keyboard short cut. (capfast "V-V" equivalent) Matt Rippa (JAC) 5 Done. Use Ctrl-A, Shift-Space
39 Keyboard pan Feature Move or pan canvas with arrows (or some key combination independent of the mouse). Matt Rippa (JAC) 5 Done. Use Ctrl-Up/Down/Left/Right Arrow


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).