summaryrefslogtreecommitdiff
path: root/python/filemetadata.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/filemetadata.py')
-rw-r--r--python/filemetadata.py37
1 files changed, 35 insertions, 2 deletions
diff --git a/python/filemetadata.py b/python/filemetadata.py
index e0222fd2..a78f548b 100644
--- a/python/filemetadata.py
+++ b/python/filemetadata.py
@@ -32,6 +32,7 @@ from . import binaryview
from . import database
from . import deprecation
from . import project
+from . import undo
ProgressFuncType = Callable[[int, int], bool]
ViewName = str
@@ -139,7 +140,6 @@ class FileMetadata:
self._nav: Optional[NavigationHandler] = None
assert _handle is not None
self.handle = _handle
- self._previous_undos = []
def __repr__(self):
return f"<FileMetadata: {self.filename}>"
@@ -384,7 +384,6 @@ class FileMetadata:
>>>
"""
id = core.BNBeginUndoActions(self.handle, anonymous_allowed)
- self._previous_undos.append(id)
return id
def commit_undo_actions(self, id: Optional[str] = None) -> None:
@@ -516,6 +515,40 @@ class FileMetadata:
"""
core.BNRedo(self.handle)
+ @property
+ def undo_entries(self) -> List['undo.UndoEntry']:
+ count = ctypes.c_ulonglong()
+
+ entries = core.BNGetUndoEntries(self.handle, count)
+ assert entries is not None, "core.BNGetUndoEntries returned None"
+
+ result = []
+ try:
+ for i in range(0, count.value):
+ tag_handle = core.BNNewUndoEntryReference(entries[i])
+ assert tag_handle is not None, "core.BNNewUndoEntryReference returned None"
+ result.append(undo.UndoEntry(tag_handle))
+ return result
+ finally:
+ core.BNFreeUndoEntryList(entries, count.value)
+
+ @property
+ def redo_entries(self) -> List['undo.UndoEntry']:
+ count = ctypes.c_ulonglong()
+
+ entries = core.BNGetRedoEntries(self.handle, count)
+ assert entries is not None, "core.BNGetRedoEntries returned None"
+
+ result = []
+ try:
+ for i in range(0, count.value):
+ tag_handle = core.BNNewUndoEntryReference(entries[i])
+ assert tag_handle is not None, "core.BNNewUndoEntryReference returned None"
+ result.append(undo.UndoEntry(tag_handle))
+ return result
+ finally:
+ core.BNFreeUndoEntryList(entries, count.value)
+
def navigate(self, view: ViewName, offset: int) -> bool:
"""
``navigate`` navigates the UI to the specified virtual address