AW: Omnis Weblib for Studio 5 -- Work in Progress

Brian Steerwood B.Steerwood at wigasoft.ch
Fri Aug 15 02:55:32 EDT 2014


Hi

David:
Thank you for the hint. I'll check it out and I share your interest in a good Omnis API interface. And it's good news that you got first results on the Mac side.

Florian:
Thank you for giving me more detailed information about the external and what possible barriers may be. This helps for my general understanding on how it works and may arouse interest for other developers.

Brian S.


-----Ursprüngliche Nachricht-----
Von: omnisdev-en-bounces at lists.omnis-dev.com [mailto:omnisdev-en-bounces at lists.omnis-dev.com] Im Auftrag von DATAX AG, Florian Binder
Gesendet: Donnerstag, 14. August 2014 10:19
An: OmnisDev List - English
Betreff: AW: Omnis Weblib for Studio 5 -- Work in Progress

Hi David,

Thanks. I'm to busy at the moment. I'll update the Readme to point to you're repository. 

Brian:
Out tests have shown that Awesomium should be up for the task, but It would be necessary to implement a master WebView, which all other WebView are child WebViews. Currently every instance of the component creates it's own process. We haven't figured this one out yet. Additionally there is still a focus issue when the WebView has the focus and the cursor in Omnis is still set on an input field. To get the focus back to Omnis a button or something similar has to pressed.

For a more general communications between Omnis and Js some new events (e.g. evCompInit, evCompAction) would need to be implemented into the external. The component itself could be packed and shipped with Awesomiums pak utility (http://wiki.awesomium.com/general-use/using-data-sources.html). That's how we implemented and deploy pdf.js (https://mozilla.github.io/pdf.js/) in our application.

Mit freundlichen Gruessen
DATAX AG Unternehmensberatung


i.A.
Florian Binder
_____________________________
DATAX AG Unternehmensberatung
Aixheimer Strasse 12
70619 Stuttgart
Deutschland
Fon: +49 711 47667-0
Fax: +49 711 47667-29
fb at datax-ag.de
www.datax-ag.de
_________________________________________________
Vorstand: Christian Hirzel (Vorstandsvorsitzender), Jakob Hirzel Vorsitzender des Aufsichtsrats: Herbert Graef Amtsgericht Stuttgart HRB 13 127


-----Ursprüngliche Nachricht-----
Von: omnisdev-en-bounces at lists.omnis-dev.com [mailto:omnisdev-en-bounces at lists.omnis-dev.com] Im Auftrag von David McKeone
Gesendet: Donnerstag, 14. August 2014 01:23
An: OmnisDev List - English
Betreff: Re: Omnis Weblib for Studio 5 -- Work in Progress

Hi Everyone,

I have some positive news on the Mac front.  Thanks to some amazing by Stefan Csomor the external is now drawing pretty well in the window on Mac.  I'd also like to thank Kelly Burgess, Bastiaan Olij, Derek Delpero, and Mitford House for their feedback as well.   There is still work to be done, but we are getting closer.  This component requires the drawing of a Cocoa View within the older Carbon/Quickdraw Omnis windows, so it's been a bit of a battle, but I'm still optimistic.

To see the (very hacky) Mac prototype project download it here:  http://www2.artsman.com/omnis/Omnis-weblib-mac.zip

If you just want to give it a try without digging into C++ code you must:

1) Extract the zip file to a directory.  E.g. Macintosh HD:omnis-weblib
2) Open "deploy" folder.  Macintosh HD:omnis-weblib:deploy:Mac
3) Copy the weblib.u_xcomp  into your Omnis.app package  E.g. /Applications/Omnis Studio.app/MacOS/Contents/xcomp
4) Copy Awesomium.framework from "deploy/bin/ext/web/browser/system-mac" to /Library/Frameworks
5) Set permissions on the framework package:

sudo chown -R root:admin /Library/Frameworks/Awesomium.framework

5) Open (but do not move!) the library "demo5.lbs" in the "lbs" folder.  E.g. C:\omnis-weblib\lbs\demo5.lbs


Florian:
------------------

Thank so much for getting us this far.  I'm happy to take over the project maintenance, if everyone is ok with that.  My fork is at https://github.com/dmckeone/omnis-weblib and all the changes I'm making will end up there.

Brian:
----------------

I believe Awesomium allows pretty close interaction with Javascript (I know that the underlying Chromium allows a lot of options).  If Awesomium allows it (http://wiki.awesomium.com/), then it should be fairly easy to wire it up into Omnis.

On the component store front, I think it would be great if other Omnis developers created sub-windows that could wrap this external to give a nice Omnis API interface to underlying JS components.  It could really open things up to new types of interactions without losing the power of Omnis.

__________________________________
David McKeone
Arts Management Systems Ltd.
mailto:david at artsman.com
http://www.artsman.com
Phone: (403) 536-1203 Fax: (403) 536-1210




On Aug 13, 2014, at 6:04 AM, Brian Steerwood <B.Steerwood at wigasoft.ch> wrote:

> Hi Florian and David
> 
> Florian, a big thanks from me too. What you have created is really a 
> huge step forward in the right direction. This opens up possibilities 
> beyond our current imagination. Just a thought, now we reduce the 
> component store to just this plugin... :-)
> 
> And thank you David for your personal commitment and work on this project and making it Studio 5+ compatible and maybe even cross-platform.
> 
> I have one question regarding the communication between Omnis und JS. Are there more events than evCloseModule and evShowMsg? Or to be more precise, is there a more generic way to communicate with Omnis and/or is it possible to extend this interface without changing internal methods inside the external?
> 
> Thank you
> 
> Brian Steerwood
> 
> 
> -----Ursprüngliche Nachricht-----
> Von: omnisdev-en-bounces at lists.omnis-dev.com 
> [mailto:omnisdev-en-bounces at lists.omnis-dev.com] Im Auftrag von DATAX 
> AG, Florian Binder
> Gesendet: Dienstag, 12. August 2014 10:45
> An: OmnisDev List - English
> Betreff: AW: Omnis Weblib for Studio 5 -- Work in Progress
> 
> Dear List,
> 
> thank you all for the kind words. I hope you all enjoy these new possibilities.
> 
> We are currently not planning to continue developing the open source version of this component, since the version we released is a fork of our component we use in our application. 
> 
> In the future it might be possible the we release another version or contribute to a fork if we achieve something worth motioning.
> 
> Mit freundlichen Gruessen
> DATAX AG Unternehmensberatung
> 
> 
> i.A.
> Florian Binder
> _____________________________
> DATAX AG Unternehmensberatung
> Aixheimer Strasse 12
> 70619 Stuttgart
> Deutschland
> Fon: +49 711 47667-0
> Fax: +49 711 47667-29
> fb at datax-ag.de
> www.datax-ag.de
> _________________________________________________
> Vorstand: Christian Hirzel (Vorstandsvorsitzender), Jakob Hirzel 
> Vorsitzender des Aufsichtsrats: Herbert Graef Amtsgericht Stuttgart 
> HRB 13 127
> 
> 
> -----Ursprüngliche Nachricht-----
> Von: omnisdev-en-bounces at lists.omnis-dev.com 
> [mailto:omnisdev-en-bounces at lists.omnis-dev.com] Im Auftrag von David 
> McKeone
> Gesendet: Montag, 11. August 2014 19:06
> An: OmnisDev List - English
> Betreff: Omnis Weblib for Studio 5 -- Work in Progress
> 
> 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:
> 
> - http://raphaeljs.com/
> - http://nvd3.org/
> 
> It also supports WebGL (http://media.tojicode.com/q3bsp), video (e.g. YouTube), and all the usual HTML5 goodies (http://html5rocks.com).  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": http://blog.codinghorror.com/the-principle-of-least-power.
> 
> 
> 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: 
> http://www2.artsman.com/omnis/OmnisWeblib5-20140811-WIP-Windows.zip  
> (Binary xcomps for Studio 5+ on Windows)
> 
> NOTE: awesomium.dll and some other dlls and files in the directory come from the Awesomium project (http://www.awesomium.com/), and were placed in their appropriate directories based on instructions from https://github.com/fb-datax/omnis-weblib.  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 
> (https://github.com/dmckeone/NVObjTemplate) 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: 
> http://www2.artsman.com/omnis/OmnisWeblib5-20140811-WIP-Windows.zip
> 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
> 
> 
> 
> _____________________________________________________________
> Manage your list subscriptions at http://lists.omnis-dev.com
> 
> _____________________________________________________________
> Manage your list subscriptions at http://lists.omnis-dev.com 
> _____________________________________________________________
> Manage your list subscriptions at http://lists.omnis-dev.com

_____________________________________________________________
Manage your list subscriptions at http://lists.omnis-dev.com

_____________________________________________________________
Manage your list subscriptions at http://lists.omnis-dev.com



More information about the omnisdev-en mailing list