I want to develop a desktop app to be used cross-system (win, mac, linux), is there a GUI framework that would allow me to write code once for all 3 platforms and have a fully-scriptable embedded web component?
I need it to have an API to communicate between app and webpage javascript.
I know C#, JavaScript and a little bit of python.
as cited, TideSDK (http://www.tidesdk.org/) is an option (the better at the moment for me) you could also go with the same idea XUL Runner (https://developer.mozilla.org/en-US/docs/XULRunner), Adobe AIR (http://www.adobe.com/devnet/air/air-sdk-download.html) ( here: http://www.adobe.com/devnet/air.html is the tutorials with "how to" in other ways than besides flash and dreamweaver, AppJS (http://appjs.org/) or Node Qt (https://github.com/arturadib/node-qt) with more work there is cef (http://code.google.com/p/chromiumembedded/), berkelium (http://berkelium.org/), awesomium (http://awesomium.com) or How can I embed firefox in a GUI application? which says how to embed gecko (firefox's engine) in applications.
ok, now my opinions on all: the first options will offer you a better way to go, as they are basically a "browser" that works cross platform, you will deploy a html + js + css app (with air you can deploy flash/action script apps too); the other options you have to build a app and then put the "browser" in it, it offers more flexibility, but may be counterproductive.
my experience with all is: tidesdk - is good and stable but is still growing, so some advanced features may be missing out, but you can compile it and the dev team is very active
xulrunner - stable, impossible to do complex things, you will need a good C knowledge to make your own components as it offers you basic stuff only. it's very flexible in what you can do, but have a rigid structure of content, your app will not run unless it's organized in such a way, and has a ugly syntax in my opinion (lol), it's a mix between java and javascript styles of programming
adobe air - easy to use and deploy, but is flash which gives me that weird itching sensations of unoptimized stuff
appjs - is nodejs, the example works, i couldn't get my custom app running, i think it's not refined yet, it works, for me, in a quirky way
nodeqt - is qt + nodejs, you need to compile your own version of qt, i haven't tested but looks simple to deploy
the others embedding ways - haven't tested, looks good and all, but i don't know, may be too work for nothing
wxWidgets too.
PS: Qt interests me more for cross-platform GUI purposes.
What about using the Chromium Embedded Framework.
It's open-source (BSD License) and comes with bindings for C, C++, .NET(1 or 2), Java, Delphi and Python.
This .NET binding is also fully compatible with Mono which will be helpful to have a cross-platform app.
Note: AppJS, which is mentionned in another answer, is build on top of CEF (using node.js).