end2endzone / ShellAnything

ShellAnything is a C++ open-source software which allow one to easily customize and add new options to *Windows Explorer* context menu. Define specific actions when a user right-click on a file or a directory.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ShellAnything API in C

end2endzone opened this issue · comments

Is your feature request related to a problem? Please describe.
An C API should be created over ShellAnything core to allow safe access to ShellAnything features.
This API could also be used as the entry point for plugins or similar features.

Describe the solution you'd like
The following code changes must be implemented:

  • Convert libeval to a DLL with a C interface.
  • Convert shellanything library to a shared library.
  • Rename shellanything library to sa.core.dll.
  • Renamed "shellanything_unittest.exe" to "sa.tests.exe". This is not requied for the API but it is for consistency.
  • Move include files from include\shellanything back to src since they are not expected to be published and used.
  • Create sa.api.dll.
    • Create file sa_action.h which provides features to the Action class.
    • Create file sa_config_manager.h which provide features to the ConfigManager class.
    • Create file sa_configuration.h which provide features to the Configuration class.
    • Create file sa_context.h which provide features to the Context class.
    • Create file sa_icon.h which provide features to the Icon class.
    • Create file sa_menu.h which provide features to the Menu class.
    • Create file sa_validator.h which provide features to the Validator class.
    • Move all sa_*.h files to include\shellanything to publish then with the installer.
  • Rename shellext library to shellextension.dll or sa.shellextension.dll. Careful to also update the scripts and the installation packages to make sure that files are now using the new filename.
  • Create a directory structure under /src. For example, /src/core, /src/api, /src/shared
  • Move shared source files a.k.a SHELLANYTHING_PRIVATE_FILES to /src/shared. Rename source_group() to "ShellAnything Shared Files".

Describe alternatives you've considered
A possible alternative is to remove all std classes from the public header files. This would allow the library to be used by other compilers. It was first tried in #102 but it was cancelled since it was to complicated and created way too much overhead. See #102 for details.

Additional context
N/A