summaryrefslogtreecommitdiff
path: root/python/project.py
diff options
context:
space:
mode:
authorJosh Ferrell <josh@vector35.com>2025-11-24 21:10:38 -0500
committerJosh Ferrell <josh@vector35.com>2025-11-24 21:12:32 -0500
commit31d963f7eb2d3615b0d0ab6ced87d06142d83883 (patch)
treee5d930f9992ef430bf460ca52acdee62d863e968 /python/project.py
parent0f1261500334e3aafb867ef397b11fef7ff201c4 (diff)
Add APIs for getting files in a project folder
Diffstat (limited to 'python/project.py')
-rw-r--r--python/project.py46
1 files changed, 46 insertions, 0 deletions
diff --git a/python/project.py b/python/project.py
index 7df3d2b5..a7985af1 100644
--- a/python/project.py
+++ b/python/project.py
@@ -383,6 +383,29 @@ class ProjectFolder:
"""
return core.BNProjectFolderExport(self._handle, str(dest), None, _wrap_progress(progress_func))
+ @property
+ def files(self) -> List['ProjectFile']:
+ """
+ Get the list of files in this folder
+
+ :return: List of files contained in the folder
+ """
+
+ count = ctypes.c_size_t()
+ value = core.BNProjectFolderGetFiles(self._handle, count)
+ if value is None:
+ raise ProjectException("Failed to get list of project files in folder")
+ result = []
+ try:
+ for i in range(count.value):
+ file_handle = core.BNNewProjectFileReference(value[i])
+ if file_handle is None:
+ raise ProjectException("core.BNNewProjectFileReference returned None")
+ result.append(ProjectFile(file_handle))
+ return result
+ finally:
+ core.BNFreeProjectFileList(value, count.value)
+
class Project:
"""
@@ -788,3 +811,26 @@ class Project:
core.BNProjectBeginBulkOperation(self._handle)
yield
core.BNProjectEndBulkOperation(self._handle)
+
+ def get_files_in_folder(self, folder: Optional['ProjectFolder']) -> List['ProjectFile']:
+ """
+ Get the list of files in a folder
+
+ :return: List of files contained in the folder
+ """
+
+ count = ctypes.c_size_t()
+ folder_handle = None if folder is None else folder._handle
+ value = core.BNProjectGetFilesInFolder(self._handle, folder_handle, count)
+ if value is None:
+ raise ProjectException("Failed to get list of project files in folder")
+ result = []
+ try:
+ for i in range(count.value):
+ file_handle = core.BNNewProjectFileReference(value[i])
+ if file_handle is None:
+ raise ProjectException("core.BNNewProjectFileReference returned None")
+ result.append(ProjectFile(file_handle))
+ return result
+ finally:
+ core.BNFreeProjectFileList(value, count.value)