Extension Package Format (LCE)

How to USE and/or how to create eXTension Builder Libraries and Custom UI Widgets
Locked
User avatar
OpenXTalkPaul
Posts: 2391
Joined: Sat Sep 11, 2021 4:19 pm
Contact:

Extension Package Format (LCE)

Post by OpenXTalkPaul »

I'm copying this here from a post in the middle of another thread, so that this info can be found and updated easier:

This is from 'libscript' (part of the engine source code)
The comments have SOME of the info about the package format used (.LCE package format).

////////////////////////////////////////////////////////////////////////////////
// Packages are a collection of modules which share a common set of foreign
// code and resources.
//
// When a package is loaded into memory, all its modules are loaded also making
// them available in the module namespace and accessible through the module
// functions.
//
// A package loaded from a particular file, or with a particular name can only
// be loaded once - if an attempt is made to load a package from a file and that
// package has the same name as a loaded package it is an error. If an attempt
// is made to load a package by name and such a package is already loaded it just
// returns that package.
//
// Ensuring modules are usable is done lazily - either by an attempt to create
// a module instance, or by explicitly ensuring via the appropriate API.
//
// Packages can be unloaded from memory, however they are not completely removed
// until it is possible to do so - i.e. until there are no instances of any module
// within the package in use.

////////////////////////////////////////////////////////////////////////////////
// Packages are a zip archive with the following structure:
// <root>/
// manifest.xml
// module.lcm
// support/
// <files for the IDE / store etc.>
// modules/
// <compiled submodule files>
// symbols/
// <compiled module debug info>
// resources/
// <shared resources>
// code/
// <compiled foriegn code>
// source/
// <original source code>
// docs/
// <docs tree>
[/code]

I'll try to elaborate on this directory structure, because the current description is no very helpful, or complete, not to mention it's only viewable as comments in the engine's C++ source but I will be adding this info to the Dictionary.

<Root> / Is the main directory of your xBuilder module's project folder that you should create.
"manifest.xml" and "module.lcm" and some other files such as the interface *.lci file, are automatically created when you compile an Extension with the Extension Builder. There's no need to create them manually. There can be only one .lcb source code file in the root directory of the project. If the extension uses any custom submodules, the source for those will go into a subfolder.

support/
This subfolder can hold a 'delault.liveCodeScript' file for your Extension. That is a file which can have pre-made xTalk scripts handlers for messages sent by a Widget. As far as I can tell you would ONLY need this for 'Widget' modules. These handlers will show up in the list of 'available handlers' for the widget when you edit the script of the widget. They're in the left-side panel of Script Editor windows, you click on them to add the pre-made handler to your script, like you would for various 'classic' controls/objects.
If this folder contains *.icon.png files the IDE will use those images as icons for displaying the Extension in various lists within the IDE. If the

docs/
You can put a guide.md (Github markdown formatted text) file along with images in this folder, and the guide will be added to the Dictionary 'Guides' tab when the module is loaded.

code/
This is where you can put external library binaries, so that they may be included along with the module.
This folder can have a subfolders for each platform/architecture that the module supports.
Locked

Who is online

Users browsing this forum: No registered users and 1 guest