Undo/Redo

<< Click to Display Table of Contents >>

Navigation:  User Interface >

Undo/Redo

Undo/Redo can be triggered in several ways:

 

Keyboard shortcuts

oCTRL-Z (undo)

oCTRL-Y (redo)

 

The OPUS Projektor needs to have focus for this to work. It doesn't matter which component in the program has focus. The step is performed in the currently active project.

 

Toolbar

 

clip0117

 

Press the arrow to the left to undo, press the arrow to the right to redo. Undo is only enabled when at least one action has been performed. Redo is only enabled when an undo step is selected.

 

Menu Edit -> Undo/Redo

 

clip0119

 

Undo/Redo list in Undo/Redo window

 

clip0120

 

clip0121 The undo/redo buttons are only enabled if actions were done (undo) and undo steps were selected (redo).

 

clip0122 The number next to the undo/redo buttons show how many steps were recorded since starting the program / opening the project.

 

clip0123 This toggle button enables/disables tooltips of undo entries in the undo history list

 

clip0124 This toggle button enables/disables mouse navigation in the undo history list

 

The undo history list always starts with "Start: <project name>".

All modifications in the project create an entry in this list. If you happen to find an action that does NOT create an entry even though it should, let us know.

The list is currently limited to 1000 entries. If the 1001st action is made, the first entry in the list will be deleted and so on.

The following actions create an entry in the undo history:

 

Graphical Object changes (all objects in the project tree) in the category:

oPages (MiniView-Pages)

oAlarms

oVKBs

oAll Property/Event and Move/Resize changes

Communication Object changes (all objects in the project tree) in the category

oCommunication (Add/Remove/Update Communication objects)

oAll Property/Event changes

JS changes (all JS files in the project tree) in the category

oJavaScripts (Add/Remove/Rename/Update JS files)

Project-Properties/Project-Event changes

All dialog changes which modify the project

oSimulation-Settings

oVariable-Manager

oTerminal and Owner(ECUs) Configuration...

oPort Configuration

oConfigure Mappings Dialog

oCAN-Freestyle: Transmit-Sequences

oCAN-Freestyle: CAN-ID Masks

oJ1939: DM1/DM2 Settings

oImport Variables

oImport DBC-File

oDataType definitions

oProcess Configuration

Current/Default Language/Unit changes

Hide/Show object changes

Day/Night Mode changes

 

Each list entry contains 3 elements:

 

1.Icon

2.Presentation Name

3.Tooltip

 

Icon

For graphical objects the icon of the object is used which was updated.

For communication objects the icon of the appropriate object is used

For JS changes the JS icon is used.

For Project-Property changes, the project icon is used.

Simulation-Settings the PClient icon is used

For Day/Night Mode changes the Day/Night Icon is used

For CAN-Mapping changes the Mapping Icon is used.

For Protocol changes the Network icon is used.

All other changes uses the Project icon

 

Presentation Name

Graphical Objects

oProperty-Changes: [<Page-Name>]: <Object-Name>: <Property-Name>

oEvent-Changes: [<Page-Name>]: <Object-Name>: <Event-Name>

oMove-Changes: [<Page-Name>]: <Object-Name>: Move

oResize-Changes: [<Page-Name>]: <Object-Name>: Resize

oAdd/Remove: : [<Page-Name>]: <Object-Name>: Add/Remove

Communication Objects

oProperty-Changes: [Project]: <Object-Name>: <Property-Name>

oEvent-Changes: [Project]: <Object-Name>: <Event-Name>

JS-Objects

oAdd: [JavaScripts]: <JS-FileName>: Add

oRemove: [JavaScripts]: <JS-FileName>: Remove

oRename: [JavaScripts]: <New-JS-FileName>: Rename

Dialog changes

oUpdate: [Project]: <Dialog-Name>: updated

 

Tooltip

Graphical Objects

oProperty/Event changes: Old-Value and New-Value is shown

oMove changes: Old-Location and New-Location is shown

oResize changes: Old-Location/Size and New-Location/Size is shown

Communication Objects

oProperty/Event changes: Old-Value and New-Value is shown

JS-Objects

oRename: Old-Name and New-Name is shown

Dialog changes

oCommon: No specific informations

oDBC-Import: Import-Count of Variables/CAN-Mappings/ECUs is shown

oVariable-Import: Variable-Count is shown + Variables-Names (only 10)

 

Note: The Time-Stamp (TS) is always shown in the tooltip for all Undo-entries.

 

JavaScript Undo-Edits

Like mentioned before, all JS changes on the File System can be reverted by Undo/Redo.

Each JS (and each version) will be saved in folder <Project-Folder>/tempScripts

The folder tempScripts will be deleted when the project is closed.

The JavaScriptHandler creates MD5 sums of all JS-Files and saves each version in tempScripts folder (the syntax is: <js_name>.js_<md5>).

It doesn't matter if a JS file is added/removed or updated in the project or on the FS, the JavaScriptHandler tracks all changes and creates the appropriate Undo-Edits in the UndoRedoHandler.

The JS files will be scanned each second on the FS for updates.

If a JS files is opened in JavaScript-Editor, the editor will be closed if the js file gets deleted by the UndoRedoHandler. (This can take a few seconds ~2s)

If the UndoRedoHandler restores an older JS file version, and the JavaScript-Editor of the restored file is opened, it takes at least 2 seconds until the editor is refreshed.

 

Note: If a JavaScript-Editor has focus and Ctrl+Z or Ctrl+Z is pressed, the UndoRedoHandler of the JavaScript-Editor will be called (not the Projektor-UndoRedoHandler)

 

Graphical-Object Undo-Edits

Pages/Alarms and VKBs

Creating/Deleting a Page/MiniViewPage/Alarm/VKB creates an Undo-Edit.

If the UndoRedoHandler deletes a Page/Alarm or VKB the appropriate TopComponent-Window will be closed as well.

If the UndoRedoHandler restores a Page/Alarm or VKB the TopComponent-Window won't be opened again.

Other objects (Frames, String Fields, Buttons, Softkeys,...)

If the UndoRedoHandler adds/removes or updates one of these objects, the appropriate page will be opened and the object will be selected on the scene.

=> If more than one object is affected all objects will be selected

Moving/Resizing Objects on the scene

If one or more objects are moved or resized on the scene, only one undo edit will be created

=> The undo edit will be created when mouse release event occured.

=> The edit is directly created when the first update occurs, but all following updates/undo edits will be merged into the first undo edit.

 

Communication-Object Undo-Edits

If Undo/Redo for Communication-Objects is performed, the appropriate change will be undone/redone but the engaged objects won't be selected in project tree or variable view.

 

Automatic Merge

The UndoRedoHandler has an automatic merge mechanism of undo entries. If several undo entries are triggered within 500ms, these entries will be merged to one entry.

This mechanism is used e.g. if the the property Dependency of a String Field is updated from None to Language. All Language dependent properties(Preview Value, Font, ...) are changed now (from Single Value to a Value-Map) and these changes will be merged. If that wasn't done, the user would be able undo each single Property-Change-Edit, which would lead to an inconsistency.

The same mechanism is used if e.g. the data type of a Variable is changed. Consequently, all data dype dependent properties are updated (Min-,Max- and Default-Value) and will be merged to one undo entry.

Another example for the automatic merge is creating a VKB. During the creation a lot of objects will be created. With the automatic merge the whole creation process will be merged to one undo entry.

 

Popup Undo/Redo Window

If the keyboard shortcut CTRL+X or CTRL+Y is pressed and the Undo/Redo Window is not opened, it will open automatically to show the last Undo/Redo entries.