Каковы альтернативы WPF/XAML с открытым исходным кодом? [закрытый]


Если мы что-то узнали из HTML/CSS, это то, что декларативные языки (например, XML) хорошо описывают пользовательские интерфейсы, потому что:

  1. это легко построить препроцессоры кода,которые могут шаблон кода эффективно.
  2. код находится в хорошо определенном хорошо структурированном (идеально) формате, поэтому его легко разобрать.
  3. технология для эффективного анализа или обхода исходного файла на основе XML уже существует.
  4. код сценария UIs становится намного проще и понятнее.
  5. Это достаточно просто, что дизайнеры могут сами разработать интерфейс.
  6. программисты сосут при создании UIs, так что это должно быть сделано достаточно легко для дизайнеров.

недавно я взглянул на мясо приложения WPF (т. е. XAML) и он выглядит удивительно знакомым с декларативным стилем языка, используемым в HTML.

текущее состояние разработки пользовательского интерфейса рабочего стола в значительной степени фракционированный, в противном случае не было бы так много дублированных усилий в области дизайна графического пользовательского интерфейса (т. е. ГТК КСУЛ и Qt приложения WinForms, в WPF, и т. д.).

есть 45 GUI платформ только для Python

Каковы некоторые графические интерфейсы с открытым исходным кодом, которые представляют эти характеристики:

  • стандартизированные
  • независимая платформа
  • декларативный язык разметки
  • язык агностик

WPF, или более конкретно XAML, кажется довольно вероятным шагом в правильном направлении.

обновление:

большое спасибо за информацию, держите его comin'. Вот варианты, которые я собрал из комментариев и ответов.

GladeXML

  • редактор: Дизайнер Интерфейсов Glade
  • платформы ОС: все
  • GUI Платформа: GTK+
  • языки программирования: C (libglade), с++, C# (Поляна#), Python, и Ада, щука, на Perl, РНР, Эйфелева, Рубин

XRC (XML-ресурс)

форматы на основе XML, которые либо не являются свободными, не кросс-платформенными, либо специфичными для языка

XUL

  • редактор: любой основной текстовый редактор
  • платформы ОС: любая ОС с браузером, поддерживающим XUL
  • платформа GUI: двигатель геккона?
  • языки: C++, Python, Ruby как языки плагинов, а не базовые языки

примечание: Я не уверен, что XUL заслуживает упоминания в этом списке, потому что это меньше языка графического интерфейса рабочего стола и больше языка make-webapps-run-on-the-desktop. Кроме того, для запуска требуется браузер. Т. е. это 'DHTML для рабочего стола.-

CookSwing

XAML (Moonlight)

  • редактор: MonoDevelop выступает
  • платформы ОС: Linux и другие ОС на базе Unix/X11 только
  • GUI платформы: GTK+
  • языки: .NET

Примечание: XAML не является форматом с открытым исходным кодом, потому что Microsoft контролирует его условий пользования, включая право изменять условия в любое время. Лунный свет не может быть юридически сделан для работы на Windows или Mac. Кроме того, единственной платформой, которая освобождена от судебного иска, является Novell. посмотреть этот для полного описания того, что я имею в виду. XAML также не является стандартом ECMA, таким как C#, управляемый C++ и среда CLR.

обновление: Вопрос был изменен с "Есть ли альтернатива с открытым исходным кодом для WPF? потому что первоначальный вопрос был неправильным, и это было отстойно. Направление этого вопроса изменилось направление, чтобы соответствовать до выравнивания с новым входом. Мои извинения людям, которые откликнулись до того, как все изменилось.

3 63

3 ответа:

Qt разрабатывает QML, который очень похож на XAML, за исключением JSON. Он доступен как предварительный просмотр, построенный против текущей версии, и доступен в моментальных снимках следующей версии.

вот небольшой фрагмент из http://doc.qt.nokia.com/4.7-snapshot/declarative-ui-components-progressbar.html

import Qt 4.7
import "content"

Rectangle {
   id: main

    width: 600; height: 405
    color: "#edecec"

    Flickable {
       anchors.fill: parent
       contentHeight: column.height + 20

       Column {
           id: column
           x: 10; y: 10
           spacing: 10

           Repeater {
               model: 25

               ProgressBar {
                 property int r: Math.floor(Math.random() * 5000 + 1000)
                 width: main.width - 20

                 NumberAnimation on value { duration: r; from: 0; to: 100; loops: Animation.Infinite }
                 ColorAnimation on color { duration: r; from: "lightsteelblue"; to: "thistle"; loops: Animation.Infinite }
                 ColorAnimation on secondColor { duration: r; from: "steelblue"; to: "#CD96CD"; loops: Animation.Infinite }
               }
           }
       }
   }
}
  • интернет забирает большую часть пара из настольных приложений, как это есть.

    Я думаю, что большая причина в том, что все так сосредоточены на интернете прямо сейчас. HTML5 будет квантовым скачком вперед в том, что может сделать сеть. С быстрый JavaScript переводчики и обозреватели способны, необходимость для рабочего стола, программы начнут ослабевать с течением времени. Это лошадь, на которую делает ставку Google, и в гораздо меньшей степени Apple, как что ж.

  • создание чего-то хорошего будет иметь радикально разные реализации для каждой ОС, поэтому сам базовый инструментарий не будет очень портативным.

    Если вы подумаете об этом, веб-это единственная действительно общая основа, на которой мы можем развивать такого рода инфраструктуру кросс-платформенным образом. WPF невероятно отличается от архитектурной перспективы по сравнению с WinForms / прямым кодом WinAPI. Адаптация чего-то подобного к каждому ОС займет много очень разных сантехники для каждой ОС, если у вас будет молитва о том, чтобы сделать что-то, что хорошо работает. (Не то, чтобы веб-приложения очень быстро, заметьте, но они становятся лучше).

  • внешний вид всегда будет чем-то вроде проблемы.

    чей внешний вид вы используете? Вы пытаетесь адаптировать пользовательский интерфейс к ОС chrome, чтобы он выглядел "родным", или вы делаете что-то вроде Swing много лет назад и развиваетесь приложения, которые выглядят отчетливо отличается от всего там? (Тьфу, это была железнодорожная катастрофа...) И если вы решите адаптировать пользовательский интерфейс к внешнему виду каждой ОС, у вас могут быть всевозможные проблемы с измерением и дизайном.

Novell имеет реализацию Silverlight с открытым исходным кодом, с большой поддержкой XAML, называемой Moonlight:

http://en.wikipedia.org/wiki/Moonlight_ (время выполнения)

http://www.mono-project.com/Moonlight