diff --git a/plugins/script_loader/CMakeLists.txt b/plugins/script_loader/CMakeLists.txt index 18213e3aa..45561dc2a 100644 --- a/plugins/script_loader/CMakeLists.txt +++ b/plugins/script_loader/CMakeLists.txt @@ -27,9 +27,13 @@ find_package(Python3 COMPONENTS Interpreter Development.Embed) if (Python3_FOUND) set(IMHEX_PYTHON_SCRIPT_SUPPORT ON) - add_romfs_resource(${CMAKE_CURRENT_SOURCE_DIR}/support/python/imhex.py "python/imhex.py") + get_target_property(PYTHON_LIBRARY Python3::Python IMPORTED_LOCATION) + get_target_property(PYTHON_INCLUDE_DIR Python3::Python INTERFACE_INCLUDE_DIRECTORIES) endif() +add_subdirectory(support/c) + + add_imhex_plugin( NAME @@ -37,22 +41,20 @@ add_imhex_plugin( SOURCES source/plugin_script_loader.cpp - - source/script_api/v1/mem.cpp - source/script_api/v1/bookmarks.cpp - source/script_api/v1/ui.cpp - source/script_api/v1/logger.cpp INCLUDES include LIBRARIES + c_api fonts - ui + FEATURES DOTNET PYTHON ) + + if (IMHEX_DOTNET_SCRIPT_SUPPORT) message(STATUS "Enabling .NET Scripting support!") @@ -77,9 +79,6 @@ if (IMHEX_PYTHON_SCRIPT_SUPPORT) source/loaders/python/library_wrapper.cpp ) - get_target_property(PYTHON_LIBRARY Python3::Python IMPORTED_LOCATION) - get_target_property(PYTHON_INCLUDE_DIR Python3::Python INTERFACE_INCLUDE_DIRECTORIES) - target_include_directories(script_loader PRIVATE ${PYTHON_INCLUDE_DIR}) target_compile_definitions(script_loader PRIVATE PYTHON_LIBRARY_PATH="${PYTHON_LIBRARY}") enable_plugin_feature(PYTHON) diff --git a/plugins/script_loader/support/c/CMakeLists.txt b/plugins/script_loader/support/c/CMakeLists.txt new file mode 100644 index 000000000..5c581faa9 --- /dev/null +++ b/plugins/script_loader/support/c/CMakeLists.txt @@ -0,0 +1,14 @@ +project(c_api) + +add_library(c_api OBJECT + source/script_api/v1/bookmarks.cpp + source/script_api/v1/logger.cpp + source/script_api/v1/mem.cpp + source/script_api/v1/ui.cpp +) + +target_include_directories(c_api PUBLIC + include +) +target_link_libraries(c_api PRIVATE libimhex ui) +target_compile_definitions(c_api PRIVATE IMHEX_PROJECT_NAME="Script") \ No newline at end of file diff --git a/plugins/script_loader/include/script_api.hpp b/plugins/script_loader/support/c/include/script_api.hpp similarity index 100% rename from plugins/script_loader/include/script_api.hpp rename to plugins/script_loader/support/c/include/script_api.hpp diff --git a/plugins/script_loader/source/script_api/v1/bookmarks.cpp b/plugins/script_loader/support/c/source/script_api/v1/bookmarks.cpp similarity index 100% rename from plugins/script_loader/source/script_api/v1/bookmarks.cpp rename to plugins/script_loader/support/c/source/script_api/v1/bookmarks.cpp diff --git a/plugins/script_loader/source/script_api/v1/logger.cpp b/plugins/script_loader/support/c/source/script_api/v1/logger.cpp similarity index 100% rename from plugins/script_loader/source/script_api/v1/logger.cpp rename to plugins/script_loader/support/c/source/script_api/v1/logger.cpp diff --git a/plugins/script_loader/source/script_api/v1/mem.cpp b/plugins/script_loader/support/c/source/script_api/v1/mem.cpp similarity index 100% rename from plugins/script_loader/source/script_api/v1/mem.cpp rename to plugins/script_loader/support/c/source/script_api/v1/mem.cpp diff --git a/plugins/script_loader/source/script_api/v1/ui.cpp b/plugins/script_loader/support/c/source/script_api/v1/ui.cpp similarity index 100% rename from plugins/script_loader/source/script_api/v1/ui.cpp rename to plugins/script_loader/support/c/source/script_api/v1/ui.cpp diff --git a/plugins/script_loader/templates/CSharp/ImHexScript/Program.cs b/plugins/script_loader/templates/CSharp/ImHexScript/Program.cs index d7fb00686..7fe7dc0a0 100644 --- a/plugins/script_loader/templates/CSharp/ImHexScript/Program.cs +++ b/plugins/script_loader/templates/CSharp/ImHexScript/Program.cs @@ -1,5 +1,4 @@ using ImHex; -using ImGuiNET; class Script { diff --git a/plugins/script_loader/support/python/imhex.py b/plugins/script_loader/templates/Python/imhex.py similarity index 99% rename from plugins/script_loader/support/python/imhex.py rename to plugins/script_loader/templates/Python/imhex.py index 5ee808525..41a613512 100644 --- a/plugins/script_loader/support/python/imhex.py +++ b/plugins/script_loader/templates/Python/imhex.py @@ -6,6 +6,7 @@ from abc import ABC, abstractmethod _script_loader = ctypes.CDLL("Script Loader", ctypes.DEFAULT_MODE, int(__script_loader__)) _callback_refs = [] + class Color: def __init__(self, r: int, g: int, b: int, a: int): self.r = r @@ -16,6 +17,7 @@ class Color: def to_int(self): return (self.a << 24) | (self.b << 16) | (self.g << 8) | self.r + class UI: @staticmethod def show_message_box(message: str): diff --git a/plugins/script_loader/templates/Python/main.py b/plugins/script_loader/templates/Python/main.py new file mode 100644 index 000000000..86930ca88 --- /dev/null +++ b/plugins/script_loader/templates/Python/main.py @@ -0,0 +1,11 @@ +import imhex + +# ImHex executes the entire script when it's being loaded and only adds it to the +# Run Script menu if there is a main function. + + +def main(): + """ + This is the main function that will be called when the script is executed + """ + pass