view Resources/CodeGeneration/testWasmIntegrated/testWasmIntegrated.ts @ 496:8b6ceae45ba0 bgo-commands-codegen

Finished (untested) C++, html, typescript, tsc & browserify production.
author bgo-osimis
date Sat, 23 Feb 2019 15:04:29 +0100
parents
children 6d62fc8a6988
line wrap: on
line source

export var SendMessageToStoneApplication: Function = null;

function SelectTool(toolName: string) {
  var command = {
    command: "selectTool:" + toolName,
    commandType: "generic-no-arg-command",
    args: {
    }                                                                                                                       
  };
  SendMessageToStoneApplication(JSON.stringify(command));
}

(<any> window).StoneFrameworkModule = {
  preRun: [ 
    function() {
    console.log('Loading the Stone Framework using WebAssembly');
    }
  ],
  postRun: [ 
    function()  {
    // This function is called by ".js" wrapper once the ".wasm"
    // WebAssembly module has been loaded and compiled by the
    // browser
    console.log('WebAssembly is ready');
    SendMessageToStoneApplication = (<any> window).StoneFrameworkModule.cwrap('SendMessageToStoneApplication', 'string', ['string']);
    }
  ],
  print: function(text : string) {
    console.log(text);
  },
  printErr: function(text : string) {
    console.error(text);
  },
  totalDependencies: 0
};

// install "SelectTool" handlers
document.querySelectorAll("[tool-selector]").forEach((e) => {
    (e as HTMLButtonElement).addEventListener("click", () => {
    SelectTool(e.attributes["tool-selector"].value);
    });
});

// this method is called "from the C++ code" when the StoneApplication is updated.
// it can be used to update the UI of the application
function UpdateWebApplication(statusUpdateMessageString: string) {
  console.log("updating web application: ", statusUpdateMessageString);
  let statusUpdateMessage = JSON.parse(statusUpdateMessageString);

  if ("event" in statusUpdateMessage)
  {
    let eventName = statusUpdateMessage["event"];
    if (eventName == "appStatusUpdated")
    {
      //ui.onAppStatusUpdated(statusUpdateMessage["data"]);
    }
  }
}