Omnis Weblib for Studio 5 -- Work in Progress

David McKeone david at
Mon Aug 11 13:05:39 EDT 2014

Hi Everyone,

Big thanks again to Florian Binder and DataX for getting the ball rolling on the modern HTML5-compliant browser component.  

I’m extremely excited about this, and I know that others must be as well, so I thought I’d do my work to convert over to Studio 5 out in the open, and post regular Work in Progress (WIP) builds to our website so that everyone can follow along.  I will definitely submit all of these changes back to the main project, but I’m not ready to do that just yet, since the main project will need to be both Studio 4 and 5 out of the box — and some of my changes to the project have broken Studio 4 compatibility.

If you aren’t excited about this, then take a look at some of these HTML5/JS graphing libraries and imagine that they could be in your apps:


It also supports WebGL (, video (e.g. YouTube), and all the usual HTML5 goodies (  Of course to use a lot of this stuff you’ll have to become more familiar with HTML, CSS, and Javascript, but that’s just how it goes these days (“Any application that can be written in Javascript, will eventually be written in Javascript":

If there are any questions, it’s a probably good idea to keep things open and ask them on this list so that everyone can benefit.

Link:  (Binary xcomps for Studio 5+ on Windows)

NOTE: awesomium.dll and some other dlls and files in the directory come from the Awesomium project (, and were placed in their appropriate directories based on instructions from  I’m putting them here for your convenience (and I hope it all works without the installer), but in the long run you will probably also want to download the installer for Awesomium and check the distribution requirements and costs.  This preview shouldn’t be misconstrued as a distribution of any kind from Artsman, it’s merely an early alpha look at the work I’m doing personally, and I’m using the Artsman server to host some of my open source work because the file is too big too email directly.

Differences between this project directory and Florian’s github version:

- Addition of “isunicode”, “UNICODE”, and “_UNICODE" pre-processor flags for building Studio 5+
- Added /Zc:wchar_t- build setting (Treat wchar_t as built-in type: No — Studio 5 externals always need this AFAIK)
- Added /Zc:forScope- build setting (Force Conformance In For Loop Scope: No — Studio 5 externals always need this AFAIK)
- Copied some functions from my OmnisTools helpers ( to assist with string handling
- Consolidation of some string handling to make it easier to have a single non-unicode/unicode code base.
- Change “logToTrace” to use regular C-strings instead of the Omnis str255 type, and convert C-Strings to str255 only when calling ECOaddTraceLine (easier Studio 4/5+ compatibility)
- Add ‘object->shutDownWebView()’ on line 475 of weblib.cpp to prevent a crash when closing the browser window on Studio 5.

- (Personal Preference) Change ‘Output Directory’ for Debug builds to: C:\TigerLogic\OS523\xcomp  (which is where my current Omnis Studio 5 copy is installed) — Allows me to just push the “Play” button in Visual Studio to start debugging.  If you are going to do your own builds, you’ll likely need to change this setting.

If you want to install this on your own machine and test it in Omnis Studio 5+ (even if you don’t have Visual Studio), I’ve included binary xcomps in the package.  To install the xcomps:

1) Download the project zip file: 
2) Extract the zip file toa  directory.  E.g. C:\omnis-weblib
3) Open “deploy” folder.  E.g. C:\omnis-weblib\deploy
4) Install DLLs in your Omnis directory
   a) Copy “awesomium.dll” from “next_to_omnis_exe” folder to be next to “omnis.exe” in the top-level Omnis Studio directory
   b) Copy “weblib.dll” from “to_xcomp” folder to be in the Omnis Studio “xcomp” folder (one level deep from the top-level Omnis Studio directory)
5) Open (but do not move!) the library "demo5.lbs” in the “lbs” folder.  E.g. C:\omnis-weblib\lbs\demo5.lbs

If you want to move the library to a different directory (or use the external in your own application) then you also need to move  the ‘deploy’ directory, and you need to change the code in Startup_Task.$construct to point to the new location.

Good luck!

-David McKeone

More information about the omnisdev-en mailing list