Каковы альтернативы WPF/XAML с открытым исходным кодом? [закрытый]
Если мы чему-то научились из HTML/CSS, это то, что декларативные языки (например, XML) хорошо описывают пользовательские интерфейсы, потому что:
- легко построить препроцессоры кода которые могут шаблонировать код эффектно.
- код находится в хорошо определенном хорошо структурированном (идеально) формате, поэтому его легко разобрать.
- технология эффективного анализа или обхода исходного файла на основе XML уже существует.
- код сценария UIs становится намного проще и понятнее.
- Это достаточно просто, что дизайнеры могут проектировать интерфейс сами.
- программисты сосут при создании UIs, поэтому это должно быть достаточно легко для дизайнеров.
недавно я взглянул на мясо приложения WPF(т. е. XAML), и он выглядит удивительно знакомым с декларативным стилем языка, используемым в HTML.
текущее состояние разработки desktop UI в значительной степени фракционированный, иначе не было бы так много дублированных усилий в области графического дизайна пользовательского интерфейса(т. е. GTK, XUL, Qt, Winforms, WPF и т. д.).
есть 45 GUI-платформ только для Python
Каковы некоторые GUI с открытым исходным кодом, которые представляют эти характеристики:
- стандартизированные
- независимая платформа
- декларативный язык разметки
- язык агностик!--4-->
WPF или, более конкретно, XAML кажется довольно вероятным шагом в правильном направлении.
обновление:
большое спасибо за информацию, продолжайте. Вот варианты, которые я собрал из комментариев и ответов.
- редактор: Дизайнер Интерфейсов Glade
- платформы ОС: все
- GUI Платформа:GTK+
- языки: C (libglade), C++, C# (Glade#), Python, Ada, Pike, Perl, PHP, Eiffel, Ruby
- Редакторы: wxGlade, XRCed, wxDesigner, DialogBlocks (несвободной)
- платформы ОС: все
- платформа GUI:wxWidgets, в
- языки: C++, Python (wxPython, в), Perl (wxPerl), .NET (wx.NET)
форматы на основе XML, которые либо не являются бесплатными, не кросс-платформенными, либо специфичными для языка
- Editor: любой основной текстовый редактор
- платформы ОС: любая ОС под управлением браузера, поддерживающего XUL
- платформа GUI: двигатель геккона?
- языки: C++, Python, Ruby как языки плагинов, а не базовые языки
примечание: Я не уверен, что XUL заслуживает упоминания в этом списке, потому что это меньше рабочего языка GUI и больше языка make-webapps-run-on-the-desktop. Кроме того, для этого требуется браузер. Т. е. это ' DHTML для рабочего стола.'
- редактор: затмение via WindowBuilder, в NetBeans 5.0 (не бесплатно) через Swing GUI Builder он же Матисс
- платформы ОС: все
- платформа GUI: Java
- языки: только Java
- редактор: MonoDevelop выступает
- платформы ОС: Linux и другие ОС на основе Unix/X11 только
- GUI платформы:GTK+
- языки: .NET
Примечание: XAML не является чистым форматом с открытым исходным кодом, поскольку Microsoft контролирует его условия использования, включая право изменять условия в любое время. Moonlight не может быть легально запущен на Windows или Mac. Кроме того, единственной платформой, которая освобождена от судебного иска, является Novell. посмотреть этот для полного описания того, что я имею в виду. XAML также не является стандартом ECMA, таким как C#, управляемый C++ и среда CLR.
обновление: Вопрос был изменен с "Есть ли альтернатива с открытым исходным кодом для WPF? потому что первоначальный вопрос был неправильным, и это отстой. Направление этого вопроса изменило направление, чтобы соответствовать новому входу. Мои извинения людям, которые ответили до того, как все изменилось.
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 }
}
}
}
}
}
-
интернет забирает большую часть steam от настольных приложений, как есть.
Я думаю, что большая причина в том, что все так сосредоточены на интернете прямо сейчас. HTML5 будет квантовым скачком вперед в том, что может сделать интернет. Благодаря быстрым интерпретаторам JavaScript и способным браузерам потребность в настольных программах со временем начнет ослабевать. Это лошадь, на которую Google делает ставку, и в гораздо меньшей степени Apple, как что ж.
-
создание чего-то хорошего будет иметь радикально разные реализации для каждой ОС, поэтому сам базовый инструментарий не будет очень портативным.
Если вы думаете об этом, веб-единственная действительно общая основа, на которой мы можем развивать такого рода инфраструктуру кросс-платформенным образом. WPF невероятно отличается от архитектурной перспективы по сравнению с WinForms / прямым кодом WinAPI. Адаптация чего-то подобного к каждому ОС потребовалось бы много очень разных сантехники для каждой ОС, если бы у вас была молитва сделать что-то, что работает хорошо. (Не то чтобы веб-приложения были очень быстрыми, заметьте, но они становятся лучше).
-
внешний вид всегда будет несколько проблемой.
чей внешний вид вы используете? Вы пытаетесь адаптировать пользовательский интерфейс к ОС chrome, чтобы он выглядел "родным", или вы делаете что-то вроде Swing много лет назад и развиваетесь приложения, которые выглядят отчетливо отличается от всего там? (Фу, это было крушение поезда...) И если вы решите адаптировать пользовательский интерфейс к внешнему виду каждой ОС, у вас могут возникнуть всевозможные проблемы с измерением и дизайном.
Novell имеет реализацию Silverlight с открытым исходным кодом, с большой поддержкой XAML, под названием Moonlight: