Every significant action in the software, including edits in an Edit Dialog, button or menu actions, etc. can be undone through the undo button, Edit menu action, or keyboard shortcut (Ctrl+Z). This is achieved by saving a copy of the entire project, minus the networks and datatables unless they are the ones being operated upon, into a memory buffer. To make it possible to store many such undo actions, each new undo state is saved as a "diff" relative to a given full save -- the diff is often much smaller. Furthermore, small edits on a single object are just saved for that object itself.
The number of undo saves to keep around is set in the Preferences.