Существует ли межсетевая инфраструктура GUI, которая поддерживает встраивание HTML-страниц?

Я хочу разработать настольное приложение для использования кросс-системы (win, mac, linux), есть ли инфраструктура графического интерфейса, которая позволила бы мне писать код один раз для всех 3-х платформ и иметь встроенный веб-компонент с возможностью записи?

Мне нужно, чтобы у него был API для связи между приложением и веб-страницей javascript.

Я знаю C #, JavaScript и немного питона.

Qt имеет такую ​​вещь с QWebView .

Существует также TideSDK, официально известная как Titanium. Это обеспечивает виджет HTML / JavaScript WebKit, который делает практически все, что вам может понадобиться, включая запуск инструментов разработчика Chrome.


EDIT ниже. Консолидация моего обновления с отзывами разработчиков TideSDK:

TideSDK , ранее Titanium Desktop, представляет собой комплект разработчика программного обеспечения с открытым исходным кодом для создания многоплатформенных настольных приложений с использованием HTML5, CSS3, JavaScript и других распространенных языков сценариев. Проект размещен на Github . Основной веб-сайт содержит исчерпывающую документацию и содержит активное сообщество разработчиков. Тысячи разработчиков использовали бывший Titanium Desktop для разработки настольных приложений. Возможно, наиболее признанными приложениями являются Wunderlist

TideSDK позволяет вам использовать свои навыки разработки веб-сайтов для создания настольных приложений и предоставляет широкий спектр привилегированных API. Вы можете легко расширить функциональность своего приложения, используя зрелые библиотеки в python, php или ruby.

Сердцем TideSDK является объектный мост, скомпилированный в компонент WebKit. Мост позволяет другим скриптовым языкам – python, php или ruby ​​- запускаться на HTML-странице с использованием тегов скриптов в DOM, подобно JavaScript. Вы также можете напрямую вызывать файлы .py, .rb или .php из вашего приложения.

TideSDK можно использовать не более, чем базовый текстовый редактор – для него не нужны какие-либо специальные инструменты или IDE, хотя многие разработчики предпочитают более богатые инструменты. TideSDK включает в себя средства командной строки для запуска вашего приложения локально (для разработки и отладки), а также для его упаковки в установщик для ОС, который вы разрабатываете (поддерживаются Windows, Mac OSX и Linux). Чтобы получить все необходимые инсталляторы, типичная среда разработки TideSDK будет включать физическую или виртуальную машину для каждой ОС. Команда TideSDK в ближайшее время планирует реализовать другой и лучший способ.

Команда TideSDK в настоящее время разрабатывает приложение TideSDK Builder. Он предоставит графический интерфейс для создания, запуска и упаковки приложений TideSDK. Чтобы разработчики начали работать быстрее, TideSDK Builder представляет новую функцию – «Леса». Леса генерируют всю плиту котла для создания проектов с определенными шаблонами разработки, такими как Backbone MVC. Разработчики могут использовать TideSDK Builder для создания, импорта и совместного использования лесов.

Дорожная карта для TideSDK включает реализацию CommonJS for 1.4, целью которой является предоставление разработчикам более модульного опыта разработки с использованием JavaScript.

Привет мир

Проект TideSDK состоит из некоторого кода шаблона с папкой «Ресурсы», которая содержит основные файлы проекта. Ниже проиллюстрирована структура простого приложения hello world, которое будет работать на всех поддерживаемых форматах:

├── CHANGELOG.txt ├── LICENSE.txt ├── README.md ├── Resources │ ├── app.js │ ├── default_app_logo.png │ └── index.html ├── manifest └── tiapp.xml 

В манифесте содержится информация о модулях времени выполнения, используемых проектом. tiapp.xml предоставляет конфигурацию, а default_app_logo.png – это изображение, которое будет отображаться по умолчанию в док-станции, в системном трее или в окнах вашего приложения.

Ниже приведено содержимое файла app.js для примера hello world (как он появится в TideSDK 1.3.0). Предыдущие версии будут использовать пространство имен Titanium, которое было прекращено.

 // create and set menu var menu = Ti.UI.createMenu(), fileItem = Ti.UI.createMenuItem('File'), exitItem = fileItem.addItem('Exit', function() { if (confirm('Are you sure you want to quit?')) { Ti.App.exit(); } }); menu.appendItem(fileItem); Ti.UI.setMenu(menu); 

Вот HTML для того же приложения. Он вызывает сценарий выше.

 <!DOCTYPE html> <html> <head> <title>Hello World</title> <style type="text/css"> body {background: #fff;} </style> </head> <body> <h1>Hello World</h1> <script type="text/javascript" src="app.js"></script> </body> </html> 

В менее чем 10 строках кода JavaScript мы создаем меню, добавляем пункты меню «Файл» и «Выход» и устанавливаем его в главное окно. Для вызова диалогового окна подтверждения выхода используется простой метод обратного вызова. Если пользователь подтвердит, приложение завершит работу.

Задний план

Титан был разработан Appcelerator и доступен под лицензией Apache 2. Первоначально Appcelerator предоставил разработчику Titanium с открытым исходным кодом для создания проектов. Позже Appcelerator представила закрытую студию Titanium Studio, IDE на вершине Aptana. Хотя в настоящее время возможно разработать TideSDK в Titanium Studio, в будущем может потребоваться плагин. [Эндрю: простите, мне это непонятно. Плагин для Titanium Studio? Или Аптана? Или TideSDK?]

Appcelerator предоставил TiStudio SDK для использования, который может помочь нам в создании плагина для TiStudio, чтобы TideSDK можно было использовать через TiStudio

как упоминалось, TideSDK ( http://www.tidesdk.org/ ) является вариантом (тем лучше на данный момент для меня), вы также можете пойти с той же идеей XUL Runner ( https://developer.mozilla.org/en -US / docs / XULRunner ), Adobe AIR ( http://www.adobe.com/devnet/air/air-sdk-download.html ) (здесь: http://www.adobe.com/devnet/air. html – это учебники с «как» другими способами, чем помимо flash и Dreamweaver, AppJS ( http://appjs.org/ ) или Node Qt ( https://github.com/arturadib/node-qt ) с большей работой существует cef ( http://code.google.com/p/chromiumembedded/ ), berkelium ( http://berkelium.org/ ), awesomium ( http://awesomium.com ) или Как вставлять Firefox в GUI приложение, в котором говорится, как встраивать gecko (движок Firefox) в приложения.

хорошо, теперь мое мнение обо всех: первые варианты предложит вам лучший способ, поскольку они в основном являются «браузером», который работает на кросс-платформе, вы будете развертывать приложение html + js + css (с воздухом вы можете развернуть flash / приложения сценариев действий); другие варианты, которые вам нужно создать, а затем добавить в него «браузер», он предлагает большую гибкость, но может быть контрпродуктивным.

мой опыт со всеми: tidesdk – хороший и стабильный, но все еще растет, поэтому некоторые дополнительные функции могут отсутствовать, но вы можете скомпилировать его, и команда разработчиков очень активна

xulrunner – стабильно, невозможно делать сложные вещи, вам понадобятся хорошие знания C, чтобы создавать свои собственные компоненты, поскольку он предлагает вам базовые вещи. это очень гибко в том, что вы можете сделать, но иметь жесткую структуру контента, ваше приложение не будет работать, если оно не организовано таким образом, и, по моему мнению, имеет уродливый синтаксис (lol), это сочетание стилей java и javascript программирования

adobe air – прост в использовании и развертывании, но это вспышка, которая дает мне эти странные ощущения зуда неоптимизированного материала

appjs – это nodejs, пример работает, я не мог запустить свое приложение, я думаю, что он еще не уточнен, он работает для меня, причудливым способом

nodeqt – это qt + nodejs, вам нужно скомпилировать собственную версию qt, я не тестировал, но выглядел просто для развертывания

другие, внедряющие способы – не тестировали, хорошо смотрятся и все, но я не знаю, может быть, тоже ничего не работает

Как насчет использования технологии Chromium Embedded Framework .

Это open-source (лицензия BSD) и поставляется с привязками для C, C ++, .NET ( 1 или 2 ), Java , Delphi и Python .

Эта привязка .NET также полностью совместима с Mono, что будет полезно для кросс-платформенного приложения.

Примечание. AppJS , который упоминается в другом ответе, строится поверх CEF (используя node.js ).

Я собираюсь выбросить это:

AppJS: http://appjs.org/

wxWidgets тоже.

PS: Qt интересует меня больше для кросс-платформенных графических интерфейсов.

Поскольку мой первый ответ был для wxWidgets, и вы чувствуете, что Qt не для вас …
Вы упомянули не javascript – обратите внимание, что PyQt " обеспечивает привязки [python] для Qt 2 и Qt 3 ". PySide – это официальные привязки Nokia для Python для Qt. Поиск «PyQt vs PySide» дает интересные результаты:

Там также PythonQt, но я вообще не рассматривал его.

FYI,

  • Примеры подключения Qt
  • Примеры Qt WebKit :

    Qt предоставляет интегрированный компонент веб-браузера на основе WebKit, популярного механизма браузера с открытым исходным кодом.

    Эти примеры и демонстрации показывают множество различных применений для WebKit, от отображения веб-страниц в пользовательском интерфейсе Qt до реализации базового веб-браузера функций.

  • Qt также поддерживает C #
  • и многие другие языки .
  • KDE (среда рабочего стола Linux) использует и разрабатывает Qt

Что-нибудь конкретное о Qt, которое делает его «не очень подходящим» для вас?

Что случилось с Mono и WinForms

  1. Странно, что Qt не для вас. Вы можете быть удивлены, услышав, что продукты Sencha Architect и Animator используют Qt и QWebView для кросс-платформенных приложений JavaScript с полными меню и значками и исполняемыми файлами, системными диалоговыми окнами и файловыми вводами-выводами.

    В настоящее время он работает в Windows, OSX и Linux.

    Они используют встроенную библиотеку под названием ion для загрузки и взаимодействия с приложением JavaScript. Они предоставляют некоторые вспомогательные классы для использования JS.

    Простое скелетное приложение c ++, которое использует Qt для создания и загрузки окна и создания веб-представления в этом окне и загрузки html и другого содержимого из файла в это представление.

  2. Еще одно решение – это Adobe Air, который похож на браузер с поддержкой со стороны. Он также обеспечивает развертывание.