From b8f62f0edfd8c756df263abad1b2c787bb40198d Mon Sep 17 00:00:00 2001 From: Morten Kromberg Date: Tue, 10 Sep 2024 00:30:26 +0100 Subject: [PATCH] Deployed 387bcee to 0.1 with MkDocs 1.6.0 and mike 2.1.3 --- 0.1/Usage/Configuration/index.html | 58 ++++++++++++++++++++++++++++- 0.1/Usage/Installation/index.html | 18 +++++---- 0.1/search/search_index.json | 2 +- 0.1/sitemap.xml.gz | Bin 127 -> 127 bytes 4 files changed, 69 insertions(+), 9 deletions(-) diff --git a/0.1/Usage/Configuration/index.html b/0.1/Usage/Configuration/index.html index 9b11564..69120b9 100755 --- a/0.1/Usage/Configuration/index.html +++ b/0.1/Usage/Configuration/index.html @@ -515,6 +515,33 @@ + + +
  • + + + For Developers + + + +
  • + +
  • + + + SHOWDEVTOOLS + + + +
  • + +
  • + + + JSClientFolder + + +
  • @@ -1417,6 +1444,33 @@ + + +
  • + + + For Developers + + + +
  • + +
  • + + + SHOWDEVTOOLS + + + +
  • + +
  • + + + JSClientFolder + + +
  • @@ -1497,7 +1551,9 @@

    LOGMODES

  • G: WG processing
  • An up-to-date list can be found in the function EWC.Log.

    -

    For Developers

    +

    For Developers

    +

    The following configuration settings are intended for use during development of EWC +itself:

    SHOWDEVTOOLS

    If you set this to 1, EWC will call ShowDevTools 1 on each HTMLRenderer that it creates.

    JSClientFolder

    diff --git a/0.1/Usage/Installation/index.html b/0.1/Usage/Installation/index.html index 6ac4634..e0e0655 100755 --- a/0.1/Usage/Installation/index.html +++ b/0.1/Usage/Installation/index.html @@ -1439,12 +1439,14 @@

    Installation

    EWC is developed as an open-sourcen GitHub repository. To download the code, you can either install Git and clone the repository using the following command:

    -

    git clone https://github.com/dyalog/ewc.git

    +
    git clone https://github.com/dyalog/ewc.git
    +

    Alternatively, you can just download a zip file containing all the code.

    Verify Installation

    -

    The simplest way to verify installtion is to run the demo application:

    -

    ]link.create # /path/to/ewc -demo.Run 'Desktop'

    +

    The simplest way to verify installation is to run the demo application:

    +
    ]link.create # /path/to/ewc
    +demo.Run 'Desktop'
    +

    This will pop up a form with a Dyalog logo and a dropdown on the right which allows you to select a variety of simple test applications that have been used to test EWC during development.

    @@ -1454,8 +1456,9 @@

    The Demo Application

    select using the right argument.

    Building your Own Application

    After linking ewc, you can create a form as follows:

    -

    EWC.Init 'Desktop' -'F1' eWC 'Form' 'Hello World' (10 10) (400 600)

    +
    EWC.Init 'Desktop'
    +'F1' eWC 'Form' 'Hello World' (10 10) (400 600)
    +

    This should create an HTMLRenderer window with the caption "Hello World". For more information on getting started, see initialisation.

    EWC Development

    @@ -1464,7 +1467,8 @@

    EWC Development

    the client code separately. In order for EWC to automatically find this code, it must be located in a folder called ewc-client, in the same folder as EWC itself.

    You can achieve this using:

    -

    git clone https://github.com/dyalog/ewc-client.git

    +
    git clone https://github.com/dyalog/ewc-client.git
    +
    diff --git a/0.1/search/search_index.json b/0.1/search/search_index.json index 3eb6068..e5ea01f 100755 --- a/0.1/search/search_index.json +++ b/0.1/search/search_index.json @@ -1 +1 @@ -{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Introduction","text":"

    EWC stands for \"Everywhere Window Create\". EWC is a cross-platform implementation of the \u2395WC family of system functions (\u2395WC, \u2395WS, \u2395WG, \u2395WN, \u2395NQ and \u2395DQ) that are available in Dyalog APL for Microsoft Windows.

    EWC only supports a subset of the functionality provided by \u2395WC. This subset is growing, driven by the requirements of early adopters. The supported subset is documented in the object reference.

    Note

    At this time, EWC is work in progress, and not supported via normal channels. A supported release of EWC is expected in mid-2025.

    EWC can run in \"Desktop\" mode using an HTMLRenderer. In this mode, EWC supports multiple forms in the same way as \u2395WC, creating one HTMLRenderer for each form.

    Alternatively, EWC can be initialised in \"Browser\" mode, in which case it starts a listener on the configured port (22322 by default), and a Browser must be connected to that port. In this mode, it really only makes sense to have a single form, although modeal MsgBox's can be popped up if required.

    Finally, there is an experimental \"Multi\" mode, intended to support multi-user applications. In this mode, EWC must also be used via browsers. For each connection, the application namespace is cloned. If the application namespace is called demo, then clones will be named demo_1, demo_2 etc. This allows each session to have separate state.

    The browser-based modes can be used on any Dyalog-supported platform, desktop mode is restricted to the platforms where the HTMLRenderer is available - currently Linux, MacOS and Windows.

    "},{"location":"#getting-started","title":"Getting Started","text":"

    Check out the installation instructions, the section on initialisation, or the implementation details.

    If you are not familiar with \u2395WC, you may want to start with the standard Dyalog documentation for this feature. The documentation for EWC only discusses differences between the original Win32 based implementation (\u2395WC) and the emulation (EWC).

    Note

    During prototyping, the project has been known as JSWC, or \"JavaScript WC\". Both the code and the documentation for EWC still contain references to JSWC. Until the transition is complete, JSWC should be read as EWC anywhere that it occurs.

    "},{"location":"Discussion/Differences/","title":"EWC versus \u2395WC","text":"

    Most importantly, EWC only supports a subset of the objects supported by \u2395WC - and for each of the supported classes, only a subset of the features of the class.

    If you use an unsupported property, EWC will output a warning message to the log and continue, in the hope that your application will work in a degraded mode. The warning message identifies the line of application code that used the unsupported feature. For example:

    59:15.169 W: *** Warning: at Make[16] wMakeSubForm[8] - Unsupported on button: FCol BCol Accelerator

    You can decide to ignore the warning, work around it, or request support for the missing feature from Dyalog. For more information, see the documentation of supported classes.

    "},{"location":"Discussion/Differences/#validation-and-error-messages","title":"Validation and Error Messages","text":"

    Property validation and error messages are not as reliable as \u2395WC and \u2395WS. If you provide incorrect property values, the results can be unpredictable: the property may simply be ignored, in the worst case the form will be blanked out due to the creation of invalid HTML.

    "},{"location":"Discussion/Differences/#implicit-interactive-dq","title":"Implicit Interactive \u2395DQ","text":"

    This is supported, but considered experimental. The implementation uses a Timer object called _EWC.EWCTIMER within the application namespace.

    "},{"location":"Discussion/Differences/#images-and-imagelists","title":"Images and ImageLists","text":"

    Images are handled differently - all images must be made defined by image files that can be loaded by a web browser. See Images for details.

    "},{"location":"Discussion/Differences/#temporary-limitations","title":"Temporary Limitations","text":"

    The following restrictions are temporary and will be relaxed before the first supported release:

    "},{"location":"Discussion/Images/","title":"Images","text":"

    In EWC all images are defined using images files, which can be in any format supported by web browsers. You can not refer directly to image files on your local machine, the images must be served up by the web server whic his embedded in EWC.

    The location of your images must be declared by setting the variable EWC.RESOURCES before calling EWC.Init, for example:

    EWC.RESOURCES\u21901 2\u2374'images' '/tmp/myapp/images'

    This creates a virtual folder /images/ that can be referred to when using images.

    The ImageList object has a new property Files, which contains a list of the file names that define the ImageList. It is not possible to populate an ImageList by creating child icons and bitmap objects, as in \u2395WC.

    The File property of an Icon, and the Picture property of a Button, Form and several other properties, are also affected by this.

    See the [Configuration] for more details.

    "},{"location":"Discussion/TechDetails/","title":"Implementation","text":"

    A detailed discussion of the implementation will appear here.

    "},{"location":"ObjectRef/ApexChart/","title":"ApexChart","text":"

    The EWC implementation of ApexChart supports:

    Properties ChartType Options Series Event Posn Size Events click legendclick"},{"location":"ObjectRef/BitMap/","title":"BitMap","text":"

    The EWC implementation of \u2395WC class BitMap has some degree of support for:

    Properties File Size

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/BitMap/#known-limitations","title":"Known Limitations","text":"

    The File property must refer to a file which resides in one of the folders defined in the EWC.RESOURCES array. See Images for more information.

    "},{"location":"ObjectRef/Button/","title":"Button","text":"

    The EWC implementation of \u2395WC class Button has some degree of support for:

    Properties Align Event Size Styles Attach Picture State Visible Caption Posn Style Events KeyPress Select

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/Button/#known-limitations","title":"Known Limitations","text":"

    The Picture property must refer to a file which resides in one of the folders defined in the EWC.RESOURCES array. See Images for more information.

    "},{"location":"ObjectRef/Circle/","title":"Circle","text":"

    The EWC implementation of \u2395WC class Circle has some degree of support for:

    Properties ArcMode FStyle Radius End FillCol Start FCol Points Visible

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/Classes/","title":"Classes","text":"

    EWC has some degree of support for the following \u2395WC classes:

    \u2395WC Classes BitMap Grid Menu SubForm Button Group MenuBar TabButton Circle Icon MenuItem TabControl Combo Image MsgBox Text Edit ImageList Poly Timer Ellipse Label Rect TreeView Font List Scroll Form ListView Splitter

    EWC adds the following classes not supported by \u2395WC:

    Additional ApexChart RibbonButton RibbonGroup Ribbon RibbonButtonGroup RibbonGroupItem

    See EWC.Doc.Details 'classname' for more details

    "},{"location":"ObjectRef/Combo/","title":"Combo","text":"

    The EWC implementation of \u2395WC class Combo has some degree of support for:

    Properties Attach Items SelItems Text Event Posn Size Visible Events Select

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/Edit/","title":"Edit","text":"

    The EWC implementation of \u2395WC class Edit has some degree of support for:

    Properties Attach FieldType Posn Text Border Font SelText Value Decimals FontObj Size Visible Event MaxLength Style FCol Password Styles Events Change GotFocus KeyPress

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/Edit/#known-limitations","title":"Known Limitations","text":"

    There is limited support for FieldType, but Numeric and Date should work.

    "},{"location":"ObjectRef/Ellipse/","title":"Ellipse","text":"

    The EWC implementation of \u2395WC class Ellipse has some degree of support for:

    Properties ArcMode FStyle Size End FillCol Start FCol Points Visible

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/Font/","title":"Font","text":"

    The EWC implementation of \u2395WC class Font has some degree of support for:

    Properties Italic Rotate Underline PName Size Weight

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/Form/","title":"Form","text":"

    The EWC implementation of \u2395WC class Form has some degree of support for:

    Properties BCol Flex Size Caption Picture Styles Coord Posn Visible Events Configure MouseDown MouseUp

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/Form/#known-limitations","title":"Known Limitations","text":"

    Coord defaults to Pixel, Size to 400 600 and Posn to 100 100. The Picture property must refer to a file which resides in one of the folders defined in the EWC.RESOURCES array. See Images for more information.

    "},{"location":"ObjectRef/Grid/","title":"Grid","text":"

    The EWC implementation of \u2395WC class Grid has some degree of support for:

    Properties Attach ColTitleFCol Input TitleHeight BCol ColTitles Posn TitleWidth CellFonts CurCell RowTitleBCol VScroll CellHeights Event RowTitleFCol Values CellTypes FCol RowTitles Visible CellWidths FormatString ShowInput ColTitleBCol HScroll Size Events CellChanged CellMove KeyPress

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/Group/","title":"Group","text":"

    The EWC implementation of \u2395WC class Group has some degree of support for:

    Properties Attach Caption Posn Styles Border Flex Size Visible Events Configure

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/Icon/","title":"Icon","text":"

    The EWC implementation of \u2395WC class Icon has some degree of support for:

    Properties File

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/Icon/#known-limitations","title":"Known Limitations","text":"

    The File property must refer to a file which resides in one of the folders defined in the EWC.RESOURCES array. See Images for more information.

    "},{"location":"ObjectRef/Image/","title":"Image","text":"

    The EWC implementation of \u2395WC class Image has some degree of support for:

    Properties Picture Points Visible

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/ImageList/","title":"ImageList","text":"

    The EWC implementation of \u2395WC class ImageList has some degree of support for:

    Properties Files ImageCount Masked Size

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/ImageList/#known-limitations","title":"Known Limitations","text":"

    In EWC, ImageLists are defined using the Files property must refer to files which reside in one of the folders defined in the EWC.RESOURCES array. See Images for more information.

    "},{"location":"ObjectRef/Label/","title":"Label","text":"

    The EWC implementation of \u2395WC class Label has some degree of support for:

    Properties Attach FCol Posn Visible BCol Font Size Caption FontObj Styles Events KeyPress

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/List/","title":"List","text":"

    The EWC implementation of \u2395WC class List has some degree of support for:

    Properties Attach Items SelItems Visible Border Posn Size

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/ListView/","title":"ListView","text":"

    The EWC implementation of \u2395WC class ListView has some degree of support for:

    Properties BCol ImageIndex ReportInfo Visible Border ImageListObj SelItems ColTitles Items Size FCol Posn View Events GotFocus ItemDblClick ItemDown

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/Menu/","title":"Menu","text":"

    The EWC implementation of \u2395WC class Menu has some degree of support for:

    Properties Caption

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/MenuBar/","title":"MenuBar","text":"

    The EWC implementation of \u2395WC class MenuBar has some degree of support for:

    Properties Visible

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/MenuItem/","title":"MenuItem","text":"

    The EWC implementation of \u2395WC class MenuItem has some degree of support for:

    Properties Caption Event Events Select

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/MsgBox/","title":"MsgBox","text":"

    The EWC implementation of \u2395WC class MsgBox has some degree of support for:

    Properties Btns Default PropList Caption Event Style Data MethodList Text

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/Poly/","title":"Poly","text":"

    The EWC implementation of \u2395WC class Poly has some degree of support for:

    Properties FCol FillCol LWidth Visible FStyle LStyle Points

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/Rect/","title":"Rect","text":"

    The EWC implementation of \u2395WC class Rect has some degree of support for:

    Properties FCol FillCol Radius Visible FStyle Points Size

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/Ribbon/","title":"Ribbon","text":"

    The EWC implementation of Ribbon supports:

    Properties BCol FCol Size Visible Data ImageListObj TitleBCol"},{"location":"ObjectRef/RibbonButton/","title":"RibbonButton","text":"

    The EWC implementation of RibbonButton supports:

    Properties Border Data Icon ImageListObj Caption Event ImageIndex Size Events Select"},{"location":"ObjectRef/RibbonButtonGroup/","title":"RibbonButtonGroup","text":"

    The EWC implementation of RibbonButtonGroup supports:

    Properties Border Data Icons ImageListObj Captions Event ImageIndex Events Select"},{"location":"ObjectRef/RibbonGroup/","title":"RibbonGroup","text":"

    The EWC implementation of RibbonGroup supports:

    Properties BorderCol Data Size Title"},{"location":"ObjectRef/RibbonGroupItem/","title":"RibbonGroupItem","text":"

    The EWC implementation of RibbonGroupItem supports:

    Properties Data Size"},{"location":"ObjectRef/Scroll/","title":"Scroll","text":"

    The EWC implementation of \u2395WC class Scroll has some degree of support for:

    Properties Align HScroll Size Visible Attach Posn Thumb Event Range VScroll Events Scroll

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/Splitter/","title":"Splitter","text":"

    The EWC implementation of \u2395WC class Splitter has some degree of support for:

    Properties Event SplitObj1 Style Posn SplitObj2 Visible Events EndSplit

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/SubForm/","title":"SubForm","text":"

    The EWC implementation of \u2395WC class SubForm has some degree of support for:

    Properties BCol Flex Size Visible Border Picture Styles Caption Posn TabObj Events Configure

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/TabButton/","title":"TabButton","text":"

    The EWC implementation of \u2395WC class TabButton has some degree of support for:

    Properties Caption Event Events Select

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/TabControl/","title":"TabControl","text":"

    The EWC implementation of \u2395WC class TabControl has some degree of support for:

    Properties ActiveBCol BCol MultiLine Size Attach FCol Posn Visible

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/Text/","title":"Text","text":"

    The EWC implementation of \u2395WC class Text has some degree of support for:

    Properties BCol Font Points Text FCol FontObj Rotate Visible

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/Timer/","title":"Timer","text":"

    The EWC implementation of \u2395WC class Timer has some degree of support for:

    Properties Active Event FireOnce Interval Events Timer

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/TreeView/","title":"TreeView","text":"

    The EWC implementation of \u2395WC class TreeView has some degree of support for:

    Properties Attach ImageIndex Posn Visible Depth ImageListObj SelItems Event Items Size Events Expanding ItemDblClick ItemDown Retracting

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"Usage/Configuration/","title":"Configuration","text":"

    The EWC namespace contains a number of variables that can be used to configure the system.

    "},{"location":"Usage/Configuration/#port","title":"PORT","text":"

    Sets the port number to be used by the server. Defaults to 22322.

    "},{"location":"Usage/Configuration/#resources","title":"RESOURCES","text":"

    Sets up virtual folders that contain images and other resources that your application might refer to. This is a 2-column matric containing pairs of virtual folder names and real folders containing resource files. For example:

    EWC.RESOURCES\u21901 2\u2374'images' '/tmp/myapp/images'

    This creates a virtual folder /images/ that can be referred to when creating ImageLists and other objects created from image files.

    You can define as many resources as you like, one per row.

    "},{"location":"Usage/Configuration/#fontmap","title":"FONTMAP","text":"

    EWC includes a number of free fonts. FONTMAP is a font substitution table, which can be used to map Windows font names used in existing applications to the free alternatives. If FONTMAP is not specified, FONTMAP is initialised from FontMap. At the time this text was written, FontMap was a 2-column matrix containing the following fonts:

    Legacy Font Free Font Substitute Segoe UI Merriweather Times New Roman Noto Sans Courier New Nimbus Mono

    You can set

    "},{"location":"Usage/Configuration/#logmodes","title":"LOGMODES","text":"

    This variable allows you to control the log messages that are output to the session while running EWC. At this stage in the development of EWC, all messages are output for diagnostic purposes. By default, all message types are output (EWC.LOGMODES\u2190\u2395A). At the time that this text was written, the following modes existed:

    An up-to-date list can be found in the function EWC.Log.

    "},{"location":"Usage/Configuration/#for-developers","title":"For Developers","text":""},{"location":"Usage/Configuration/#showdevtools","title":"SHOWDEVTOOLS","text":"

    If you set this to 1, EWC will call ShowDevTools 1 on each HTMLRenderer that it creates.

    "},{"location":"Usage/Configuration/#jsclientfolder","title":"JSClientFolder","text":"

    If you want to override EWC's efforts to locate a folder where the JavaScript client code resides, you can set this variable to point to a specific folder. This is only useful if you are either a developer or on the bleeding edge of client development, and need to switch between versions of the client.

    If this variable is not set, EWC will first look for a sibling folder called EWC-client in case you have a checkout of the JavaScript code in that location, and if that does not exist use the client in the /client/dist folder within the EWC folder.

    "},{"location":"Usage/Demo/","title":"The Demo Application","text":"

    The EWC repository contains a folder named demo, which contains a collection of forms that have been used to test EWC during development, After linking the EWC folder to your active workspace, you can launch this application by calling demo.Run with a right argument that selects the mode (one of 'Desktop', 'Browser' or 'Multi'):

    ]link.create # /path/to/ewc demo.Run 'Desktop'

    Every window that is created by the Demo app contains a drop-down at the top right, which allows you to pick one of the sample apps. There is also a button with the caption \"Stop\", which can be used to end the demo. Finally, for use by developers (or curious users), and when running in Desktop modde, there is a button with the caption \"Inspect\", which will open a DevTools window for the active HTMLRenderer window.

    The demo application also works in 'Multi' mode, which means you can connect several browser sessions to it and see how cloning works. The demo namespace contains both an Initialise function that starts a new session in Multi mode, and an onClose function that is called when a session ends.

    "},{"location":"Usage/Initialisation/","title":"Initialising an EWC session","text":"

    Once you have a folder on your machine containing EWC, you can load it into a Dyalog APL session (18.2 or later is required):

    ]link.import # /path/to/ewc

    Where /path/to/ewc is the name of the folder that you created during installation.

    "},{"location":"Usage/Initialisation/#ewcinit","title":"EWC.Init","text":"

    The function EWC.Init takes a right argument of the mode that you want to enable:

    For example:

    EWC.Init 'Desktop'

    EWC.Init will also create cover-functions eWC, eWS and so on, in the namespace from which Init was called. These are intended to be used as replacements for the system functions \u2395WC, \u2395WS, etc.

    If you would like to use a different prefix letter for these functions, you can provide a left argument to change the names. For example,

    'x' EWC.Init 'Browser'

    Will create functions xWC, xWS etc, and start EWC in Browser mode.

    "},{"location":"Usage/Initialisation/#multi-mode","title":"'Multi' Mode","text":"

    In Desktop and Browser mode, your application can call EWC.Init and then immediately continue to create GUI components using eWC. In browser mode, EWC.Init will not return until a browser is connected.

    However, in Multi mode, your application namespace must contain a function called Initialise which will be called when each new browser session starts, to create the GUI for the new session.

    If your application namespace contains a function called onClose, then it will be called when the browser session is terminated.

    Note that in Multi mode, the only permitted prefix is 'e'.

    "},{"location":"Usage/Installation/","title":"Installation","text":"

    EWC is developed as an open-sourcen GitHub repository. To download the code, you can either install Git and clone the repository using the following command:

    git clone https://github.com/dyalog/ewc.git

    Alternatively, you can just download a zip file containing all the code.

    "},{"location":"Usage/Installation/#verify-installation","title":"Verify Installation","text":"

    The simplest way to verify installtion is to run the demo application:

    ]link.create # /path/to/ewc demo.Run 'Desktop'

    This will pop up a form with a Dyalog logo and a dropdown on the right which allows you to select a variety of simple test applications that have been used to test EWC during development.

    "},{"location":"Usage/Installation/#the-demo-application","title":"The Demo Application","text":"

    The demo application provides several examples that illustrate the use of EWC. It supports Desktop, Browser and Multi modes - and will run in the mode that you select using the right argument.

    "},{"location":"Usage/Installation/#building-your-own-application","title":"Building your Own Application","text":"

    After linking ewc, you can create a form as follows:

    EWC.Init 'Desktop' 'F1' eWC 'Form' 'Hello World' (10 10) (400 600)

    This should create an HTMLRenderer window with the caption \"Hello World\". For more information on getting started, see initialisation.

    "},{"location":"Usage/Installation/#ewc-development","title":"EWC Development","text":"

    If you are developing EWC, or you are working with EWC developers and need to quickly pick up changes to the JavaScript client, it may be a good idea to clone the client code separately. In order for EWC to automatically find this code, it must be located in a folder called ewc-client, in the same folder as EWC itself.

    You can achieve this using:

    git clone https://github.com/dyalog/ewc-client.git

    "}]} \ No newline at end of file +{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Introduction","text":"

    EWC stands for \"Everywhere Window Create\". EWC is a cross-platform implementation of the \u2395WC family of system functions (\u2395WC, \u2395WS, \u2395WG, \u2395WN, \u2395NQ and \u2395DQ) that are available in Dyalog APL for Microsoft Windows.

    EWC only supports a subset of the functionality provided by \u2395WC. This subset is growing, driven by the requirements of early adopters. The supported subset is documented in the object reference.

    Note

    At this time, EWC is work in progress, and not supported via normal channels. A supported release of EWC is expected in mid-2025.

    EWC can run in \"Desktop\" mode using an HTMLRenderer. In this mode, EWC supports multiple forms in the same way as \u2395WC, creating one HTMLRenderer for each form.

    Alternatively, EWC can be initialised in \"Browser\" mode, in which case it starts a listener on the configured port (22322 by default), and a Browser must be connected to that port. In this mode, it really only makes sense to have a single form, although modeal MsgBox's can be popped up if required.

    Finally, there is an experimental \"Multi\" mode, intended to support multi-user applications. In this mode, EWC must also be used via browsers. For each connection, the application namespace is cloned. If the application namespace is called demo, then clones will be named demo_1, demo_2 etc. This allows each session to have separate state.

    The browser-based modes can be used on any Dyalog-supported platform, desktop mode is restricted to the platforms where the HTMLRenderer is available - currently Linux, MacOS and Windows.

    "},{"location":"#getting-started","title":"Getting Started","text":"

    Check out the installation instructions, the section on initialisation, or the implementation details.

    If you are not familiar with \u2395WC, you may want to start with the standard Dyalog documentation for this feature. The documentation for EWC only discusses differences between the original Win32 based implementation (\u2395WC) and the emulation (EWC).

    Note

    During prototyping, the project has been known as JSWC, or \"JavaScript WC\". Both the code and the documentation for EWC still contain references to JSWC. Until the transition is complete, JSWC should be read as EWC anywhere that it occurs.

    "},{"location":"Discussion/Differences/","title":"EWC versus \u2395WC","text":"

    Most importantly, EWC only supports a subset of the objects supported by \u2395WC - and for each of the supported classes, only a subset of the features of the class.

    If you use an unsupported property, EWC will output a warning message to the log and continue, in the hope that your application will work in a degraded mode. The warning message identifies the line of application code that used the unsupported feature. For example:

    59:15.169 W: *** Warning: at Make[16] wMakeSubForm[8] - Unsupported on button: FCol BCol Accelerator

    You can decide to ignore the warning, work around it, or request support for the missing feature from Dyalog. For more information, see the documentation of supported classes.

    "},{"location":"Discussion/Differences/#validation-and-error-messages","title":"Validation and Error Messages","text":"

    Property validation and error messages are not as reliable as \u2395WC and \u2395WS. If you provide incorrect property values, the results can be unpredictable: the property may simply be ignored, in the worst case the form will be blanked out due to the creation of invalid HTML.

    "},{"location":"Discussion/Differences/#implicit-interactive-dq","title":"Implicit Interactive \u2395DQ","text":"

    This is supported, but considered experimental. The implementation uses a Timer object called _EWC.EWCTIMER within the application namespace.

    "},{"location":"Discussion/Differences/#images-and-imagelists","title":"Images and ImageLists","text":"

    Images are handled differently - all images must be made defined by image files that can be loaded by a web browser. See Images for details.

    "},{"location":"Discussion/Differences/#temporary-limitations","title":"Temporary Limitations","text":"

    The following restrictions are temporary and will be relaxed before the first supported release:

    "},{"location":"Discussion/Images/","title":"Images","text":"

    In EWC all images are defined using images files, which can be in any format supported by web browsers. You can not refer directly to image files on your local machine, the images must be served up by the web server whic his embedded in EWC.

    The location of your images must be declared by setting the variable EWC.RESOURCES before calling EWC.Init, for example:

    EWC.RESOURCES\u21901 2\u2374'images' '/tmp/myapp/images'

    This creates a virtual folder /images/ that can be referred to when using images.

    The ImageList object has a new property Files, which contains a list of the file names that define the ImageList. It is not possible to populate an ImageList by creating child icons and bitmap objects, as in \u2395WC.

    The File property of an Icon, and the Picture property of a Button, Form and several other properties, are also affected by this.

    See the [Configuration] for more details.

    "},{"location":"Discussion/TechDetails/","title":"Implementation","text":"

    A detailed discussion of the implementation will appear here.

    "},{"location":"ObjectRef/ApexChart/","title":"ApexChart","text":"

    The EWC implementation of ApexChart supports:

    Properties ChartType Options Series Event Posn Size Events click legendclick"},{"location":"ObjectRef/BitMap/","title":"BitMap","text":"

    The EWC implementation of \u2395WC class BitMap has some degree of support for:

    Properties File Size

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/BitMap/#known-limitations","title":"Known Limitations","text":"

    The File property must refer to a file which resides in one of the folders defined in the EWC.RESOURCES array. See Images for more information.

    "},{"location":"ObjectRef/Button/","title":"Button","text":"

    The EWC implementation of \u2395WC class Button has some degree of support for:

    Properties Align Event Size Styles Attach Picture State Visible Caption Posn Style Events KeyPress Select

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/Button/#known-limitations","title":"Known Limitations","text":"

    The Picture property must refer to a file which resides in one of the folders defined in the EWC.RESOURCES array. See Images for more information.

    "},{"location":"ObjectRef/Circle/","title":"Circle","text":"

    The EWC implementation of \u2395WC class Circle has some degree of support for:

    Properties ArcMode FStyle Radius End FillCol Start FCol Points Visible

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/Classes/","title":"Classes","text":"

    EWC has some degree of support for the following \u2395WC classes:

    \u2395WC Classes BitMap Grid Menu SubForm Button Group MenuBar TabButton Circle Icon MenuItem TabControl Combo Image MsgBox Text Edit ImageList Poly Timer Ellipse Label Rect TreeView Font List Scroll Form ListView Splitter

    EWC adds the following classes not supported by \u2395WC:

    Additional ApexChart RibbonButton RibbonGroup Ribbon RibbonButtonGroup RibbonGroupItem

    See EWC.Doc.Details 'classname' for more details

    "},{"location":"ObjectRef/Combo/","title":"Combo","text":"

    The EWC implementation of \u2395WC class Combo has some degree of support for:

    Properties Attach Items SelItems Text Event Posn Size Visible Events Select

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/Edit/","title":"Edit","text":"

    The EWC implementation of \u2395WC class Edit has some degree of support for:

    Properties Attach FieldType Posn Text Border Font SelText Value Decimals FontObj Size Visible Event MaxLength Style FCol Password Styles Events Change GotFocus KeyPress

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/Edit/#known-limitations","title":"Known Limitations","text":"

    There is limited support for FieldType, but Numeric and Date should work.

    "},{"location":"ObjectRef/Ellipse/","title":"Ellipse","text":"

    The EWC implementation of \u2395WC class Ellipse has some degree of support for:

    Properties ArcMode FStyle Size End FillCol Start FCol Points Visible

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/Font/","title":"Font","text":"

    The EWC implementation of \u2395WC class Font has some degree of support for:

    Properties Italic Rotate Underline PName Size Weight

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/Form/","title":"Form","text":"

    The EWC implementation of \u2395WC class Form has some degree of support for:

    Properties BCol Flex Size Caption Picture Styles Coord Posn Visible Events Configure MouseDown MouseUp

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/Form/#known-limitations","title":"Known Limitations","text":"

    Coord defaults to Pixel, Size to 400 600 and Posn to 100 100. The Picture property must refer to a file which resides in one of the folders defined in the EWC.RESOURCES array. See Images for more information.

    "},{"location":"ObjectRef/Grid/","title":"Grid","text":"

    The EWC implementation of \u2395WC class Grid has some degree of support for:

    Properties Attach ColTitleFCol Input TitleHeight BCol ColTitles Posn TitleWidth CellFonts CurCell RowTitleBCol VScroll CellHeights Event RowTitleFCol Values CellTypes FCol RowTitles Visible CellWidths FormatString ShowInput ColTitleBCol HScroll Size Events CellChanged CellMove KeyPress

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/Group/","title":"Group","text":"

    The EWC implementation of \u2395WC class Group has some degree of support for:

    Properties Attach Caption Posn Styles Border Flex Size Visible Events Configure

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/Icon/","title":"Icon","text":"

    The EWC implementation of \u2395WC class Icon has some degree of support for:

    Properties File

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/Icon/#known-limitations","title":"Known Limitations","text":"

    The File property must refer to a file which resides in one of the folders defined in the EWC.RESOURCES array. See Images for more information.

    "},{"location":"ObjectRef/Image/","title":"Image","text":"

    The EWC implementation of \u2395WC class Image has some degree of support for:

    Properties Picture Points Visible

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/ImageList/","title":"ImageList","text":"

    The EWC implementation of \u2395WC class ImageList has some degree of support for:

    Properties Files ImageCount Masked Size

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/ImageList/#known-limitations","title":"Known Limitations","text":"

    In EWC, ImageLists are defined using the Files property must refer to files which reside in one of the folders defined in the EWC.RESOURCES array. See Images for more information.

    "},{"location":"ObjectRef/Label/","title":"Label","text":"

    The EWC implementation of \u2395WC class Label has some degree of support for:

    Properties Attach FCol Posn Visible BCol Font Size Caption FontObj Styles Events KeyPress

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/List/","title":"List","text":"

    The EWC implementation of \u2395WC class List has some degree of support for:

    Properties Attach Items SelItems Visible Border Posn Size

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/ListView/","title":"ListView","text":"

    The EWC implementation of \u2395WC class ListView has some degree of support for:

    Properties BCol ImageIndex ReportInfo Visible Border ImageListObj SelItems ColTitles Items Size FCol Posn View Events GotFocus ItemDblClick ItemDown

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/Menu/","title":"Menu","text":"

    The EWC implementation of \u2395WC class Menu has some degree of support for:

    Properties Caption

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/MenuBar/","title":"MenuBar","text":"

    The EWC implementation of \u2395WC class MenuBar has some degree of support for:

    Properties Visible

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/MenuItem/","title":"MenuItem","text":"

    The EWC implementation of \u2395WC class MenuItem has some degree of support for:

    Properties Caption Event Events Select

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/MsgBox/","title":"MsgBox","text":"

    The EWC implementation of \u2395WC class MsgBox has some degree of support for:

    Properties Btns Default PropList Caption Event Style Data MethodList Text

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/Poly/","title":"Poly","text":"

    The EWC implementation of \u2395WC class Poly has some degree of support for:

    Properties FCol FillCol LWidth Visible FStyle LStyle Points

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/Rect/","title":"Rect","text":"

    The EWC implementation of \u2395WC class Rect has some degree of support for:

    Properties FCol FillCol Radius Visible FStyle Points Size

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/Ribbon/","title":"Ribbon","text":"

    The EWC implementation of Ribbon supports:

    Properties BCol FCol Size Visible Data ImageListObj TitleBCol"},{"location":"ObjectRef/RibbonButton/","title":"RibbonButton","text":"

    The EWC implementation of RibbonButton supports:

    Properties Border Data Icon ImageListObj Caption Event ImageIndex Size Events Select"},{"location":"ObjectRef/RibbonButtonGroup/","title":"RibbonButtonGroup","text":"

    The EWC implementation of RibbonButtonGroup supports:

    Properties Border Data Icons ImageListObj Captions Event ImageIndex Events Select"},{"location":"ObjectRef/RibbonGroup/","title":"RibbonGroup","text":"

    The EWC implementation of RibbonGroup supports:

    Properties BorderCol Data Size Title"},{"location":"ObjectRef/RibbonGroupItem/","title":"RibbonGroupItem","text":"

    The EWC implementation of RibbonGroupItem supports:

    Properties Data Size"},{"location":"ObjectRef/Scroll/","title":"Scroll","text":"

    The EWC implementation of \u2395WC class Scroll has some degree of support for:

    Properties Align HScroll Size Visible Attach Posn Thumb Event Range VScroll Events Scroll

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/Splitter/","title":"Splitter","text":"

    The EWC implementation of \u2395WC class Splitter has some degree of support for:

    Properties Event SplitObj1 Style Posn SplitObj2 Visible Events EndSplit

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/SubForm/","title":"SubForm","text":"

    The EWC implementation of \u2395WC class SubForm has some degree of support for:

    Properties BCol Flex Size Visible Border Picture Styles Caption Posn TabObj Events Configure

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/TabButton/","title":"TabButton","text":"

    The EWC implementation of \u2395WC class TabButton has some degree of support for:

    Properties Caption Event Events Select

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/TabControl/","title":"TabControl","text":"

    The EWC implementation of \u2395WC class TabControl has some degree of support for:

    Properties ActiveBCol BCol MultiLine Size Attach FCol Posn Visible

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/Text/","title":"Text","text":"

    The EWC implementation of \u2395WC class Text has some degree of support for:

    Properties BCol Font Points Text FCol FontObj Rotate Visible

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/Timer/","title":"Timer","text":"

    The EWC implementation of \u2395WC class Timer has some degree of support for:

    Properties Active Event FireOnce Interval Events Timer

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"ObjectRef/TreeView/","title":"TreeView","text":"

    The EWC implementation of \u2395WC class TreeView has some degree of support for:

    Properties Attach ImageIndex Posn Visible Depth ImageListObj SelItems Event Items Size Events Expanding ItemDblClick ItemDown Retracting

    NB: Links above are to the complete \u2395WC documentation

    "},{"location":"Usage/Configuration/","title":"Configuration","text":"

    The EWC namespace contains a number of variables that can be used to configure the system.

    "},{"location":"Usage/Configuration/#port","title":"PORT","text":"

    Sets the port number to be used by the server. Defaults to 22322.

    "},{"location":"Usage/Configuration/#resources","title":"RESOURCES","text":"

    Sets up virtual folders that contain images and other resources that your application might refer to. This is a 2-column matric containing pairs of virtual folder names and real folders containing resource files. For example:

    EWC.RESOURCES\u21901 2\u2374'images' '/tmp/myapp/images'

    This creates a virtual folder /images/ that can be referred to when creating ImageLists and other objects created from image files.

    You can define as many resources as you like, one per row.

    "},{"location":"Usage/Configuration/#fontmap","title":"FONTMAP","text":"

    EWC includes a number of free fonts. FONTMAP is a font substitution table, which can be used to map Windows font names used in existing applications to the free alternatives. If FONTMAP is not specified, FONTMAP is initialised from FontMap. At the time this text was written, FontMap was a 2-column matrix containing the following fonts:

    Legacy Font Free Font Substitute Segoe UI Merriweather Times New Roman Noto Sans Courier New Nimbus Mono

    You can set

    "},{"location":"Usage/Configuration/#logmodes","title":"LOGMODES","text":"

    This variable allows you to control the log messages that are output to the session while running EWC. At this stage in the development of EWC, all messages are output for diagnostic purposes. By default, all message types are output (EWC.LOGMODES\u2190\u2395A). At the time that this text was written, the following modes existed:

    An up-to-date list can be found in the function EWC.Log.

    "},{"location":"Usage/Configuration/#for-developers","title":"For Developers","text":"

    The following configuration settings are intended for use during development of EWC itself:

    "},{"location":"Usage/Configuration/#showdevtools","title":"SHOWDEVTOOLS","text":"

    If you set this to 1, EWC will call ShowDevTools 1 on each HTMLRenderer that it creates.

    "},{"location":"Usage/Configuration/#jsclientfolder","title":"JSClientFolder","text":"

    If you want to override EWC's efforts to locate a folder where the JavaScript client code resides, you can set this variable to point to a specific folder. This is only useful if you are either a developer or on the bleeding edge of client development, and need to switch between versions of the client.

    If this variable is not set, EWC will first look for a sibling folder called EWC-client in case you have a checkout of the JavaScript code in that location, and if that does not exist use the client in the /client/dist folder within the EWC folder.

    "},{"location":"Usage/Demo/","title":"The Demo Application","text":"

    The EWC repository contains a folder named demo, which contains a collection of forms that have been used to test EWC during development, After linking the EWC folder to your active workspace, you can launch this application by calling demo.Run with a right argument that selects the mode (one of 'Desktop', 'Browser' or 'Multi'):

    ]link.create # /path/to/ewc demo.Run 'Desktop'

    Every window that is created by the Demo app contains a drop-down at the top right, which allows you to pick one of the sample apps. There is also a button with the caption \"Stop\", which can be used to end the demo. Finally, for use by developers (or curious users), and when running in Desktop modde, there is a button with the caption \"Inspect\", which will open a DevTools window for the active HTMLRenderer window.

    The demo application also works in 'Multi' mode, which means you can connect several browser sessions to it and see how cloning works. The demo namespace contains both an Initialise function that starts a new session in Multi mode, and an onClose function that is called when a session ends.

    "},{"location":"Usage/Initialisation/","title":"Initialising an EWC session","text":"

    Once you have a folder on your machine containing EWC, you can load it into a Dyalog APL session (18.2 or later is required):

    ]link.import # /path/to/ewc

    Where /path/to/ewc is the name of the folder that you created during installation.

    "},{"location":"Usage/Initialisation/#ewcinit","title":"EWC.Init","text":"

    The function EWC.Init takes a right argument of the mode that you want to enable:

    For example:

    EWC.Init 'Desktop'

    EWC.Init will also create cover-functions eWC, eWS and so on, in the namespace from which Init was called. These are intended to be used as replacements for the system functions \u2395WC, \u2395WS, etc.

    If you would like to use a different prefix letter for these functions, you can provide a left argument to change the names. For example,

    'x' EWC.Init 'Browser'

    Will create functions xWC, xWS etc, and start EWC in Browser mode.

    "},{"location":"Usage/Initialisation/#multi-mode","title":"'Multi' Mode","text":"

    In Desktop and Browser mode, your application can call EWC.Init and then immediately continue to create GUI components using eWC. In browser mode, EWC.Init will not return until a browser is connected.

    However, in Multi mode, your application namespace must contain a function called Initialise which will be called when each new browser session starts, to create the GUI for the new session.

    If your application namespace contains a function called onClose, then it will be called when the browser session is terminated.

    Note that in Multi mode, the only permitted prefix is 'e'.

    "},{"location":"Usage/Installation/","title":"Installation","text":"

    EWC is developed as an open-sourcen GitHub repository. To download the code, you can either install Git and clone the repository using the following command:

    git clone https://github.com/dyalog/ewc.git\n

    Alternatively, you can just download a zip file containing all the code.

    "},{"location":"Usage/Installation/#verify-installation","title":"Verify Installation","text":"

    The simplest way to verify installation is to run the demo application:

    ]link.create # /path/to/ewc\ndemo.Run 'Desktop'\n

    This will pop up a form with a Dyalog logo and a dropdown on the right which allows you to select a variety of simple test applications that have been used to test EWC during development.

    "},{"location":"Usage/Installation/#the-demo-application","title":"The Demo Application","text":"

    The demo application provides several examples that illustrate the use of EWC. It supports Desktop, Browser and Multi modes - and will run in the mode that you select using the right argument.

    "},{"location":"Usage/Installation/#building-your-own-application","title":"Building your Own Application","text":"

    After linking ewc, you can create a form as follows:

    EWC.Init 'Desktop'\n'F1' eWC 'Form' 'Hello World' (10 10) (400 600)\n

    This should create an HTMLRenderer window with the caption \"Hello World\". For more information on getting started, see initialisation.

    "},{"location":"Usage/Installation/#ewc-development","title":"EWC Development","text":"

    If you are developing EWC, or you are working with EWC developers and need to quickly pick up changes to the JavaScript client, it may be a good idea to clone the client code separately. In order for EWC to automatically find this code, it must be located in a folder called ewc-client, in the same folder as EWC itself.

    You can achieve this using:

    git clone https://github.com/dyalog/ewc-client.git\n
    "}]} \ No newline at end of file diff --git a/0.1/sitemap.xml.gz b/0.1/sitemap.xml.gz index 9583af8e4bfcac90a49e13154cc29632d356bb87..e78c2127e6ab8c864219e65494419b703a0dea88 100755 GIT binary patch delta 13 Ucmb=gXP58h;7E|WH<7&p02|o^EC2ui delta 13 Ucmb=gXP58h;7BmNHj%vo030j?I{*Lx