Quelles sont les alternatives Open Source à WPF / XAML?

Si nous avons appris quelque chose de HTML / CSS, les langages déclaratifs (comme XML) décrivent bien les interfaces utilisateur car:

  1. Il est facile de créer des préprocesseurs de code capables de modéliser le code efficacement.
  2. Le code est dans un format bien structuré (idéalement), donc facile à parsingr.
  3. La technologie permettant d’parsingr ou d’parsingr efficacement un fichier source XML existe déjà.
  4. Le code scripté de l’interface utilisateur devient beaucoup plus simple et plus facile à comprendre.
  5. C’est assez simple que les concepteurs puissent concevoir l’interface eux-mêmes.
  6. Les programmeurs craignent de créer des interfaces utilisateur, ce qui devrait être assez facile pour les concepteurs.

J’ai récemment examiné le contenu d’une application WPF (c.-à-d. Le XAML) et il semble étonnamment familier au style de langage déclaratif utilisé en HTML.

L’état actuel du développement de l’interface utilisateur des postes de travail est en grande partie fractionné, sinon il n’y aurait pas autant d’efforts dupliqués dans le domaine de la conception d’interface utilisateur graphique (IE, GTK, XUL, Qt, Winforms, WPF, etc.).

Il y a 45 plates-formes d’interface graphique pour Python seul

Quelles sont certaines des interfaces graphiques Open Source qui représentent ces caractéristiques:

  • normalisé
  • plate-forme indépendante
  • langage de balisage déclaratif
  • agnostique de la langue

WPF, ou plus précisément XAML, semble être un pas dans la bonne direction.

Mettre à jour:

Merci beaucoup pour l’info, continuez comme ça. Voici les options que j’ai recueillies à partir des commentaires et des réponses.

GladeXML

  • Éditeur: Glade Interface Designer
  • Plateformes OS: Tous
  • Plate-forme graphique: GTK +
  • Langues: C (libglade), C ++, C # (Glade #), Python, Ada, Pike, Perl, PHP, Eiffel, Ruby

XRC (ressource XML)

  • Editeurs: wxGlade , XRCed , wxDesigner , DialogBlocks (non libre)
  • Plateformes OS: Tous
  • Plate-forme graphique: wxWidgets
  • Langues: C ++, Python ( wxPython ), Perl ( wxPerl ), .NET ( wx.NET )

Formats basés sur XML qui ne sont pas gratuits, non multi-plateforme ou spécifiques à une langue

XUL

  • Éditeur: tout éditeur de texte de base
  • Plateformes OS: tout système d’exploitation exécutant un navigateur prenant en charge XUL
  • Plate-forme GUI: Gecko Engine?
  • Langages: C ++, Python, Ruby comme langages de plug-in, pas de langages de base

Note: Je ne suis pas sûr que XUL mérite d’être mentionné dans cette liste car il s’agit moins d’une langue d’interface graphique de bureau et plus d’une langue make-webapps-run-on-the-desktop. De plus, il faut un navigateur pour fonctionner. IE, c’est «DHTML pour le bureau».

CookSwing

  • Editeur: Eclipse via WindowBuilder , NetBeans 5.0 (non libre) via Swing GUI Builder aka Matisse
  • Plateformes OS: Tous
  • Plateforme graphique: Java
  • Langues: Java uniquement

XAML (clair de lune)

  • Éditeur: MonoDevelop
  • Plates-formes de système d’exploitation: Linux et autres systèmes d’exploitation Unix / X11 uniquement
  • Plateformes GUI: GTK +
  • Langues: .NET

Remarque: XAML n’est pas un format Open Source pur, car Microsoft contrôle ses conditions d’utilisation, y compris le droit de modifier les termes à tout moment. Moonlight ne peut légalement pas être exécuté sur Windows ou Mac. En outre, Novell est la seule plate-forme exemptée de poursuites. Voir cela pour une description complète de ce que je veux dire. XAML n’est pas non plus un standard ECMA comme C #, Caged Managed et le CLR.

Mise à jour: La question a été modifiée de “Existe-t-il une alternative Open Source à WPF? Parce que la question initiale était incorrecte et elle était minable. La direction de cette question a changé de direction pour correspondre à la nouvelle entrée. les personnes qui ont répondu avant de changer.

Qt développe QML, qui ressemble beaucoup à XAML sauf en JSON. Il est disponible en tant qu’aperçu intégré à la version actuelle et est disponible dans les instantanés de la prochaine version.

Voici un petit extrait de 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 } } } } } } 
  • Le Web élimine la plupart des applications de bureau telles quelles.

    Je pense que la grande raison est que tout le monde est tellement concentré sur le web en ce moment. HTML5 va faire un bond en avant dans ce que le Web peut faire. Avec les interpréteurs JavaScript rapides et les navigateurs compatibles, le besoin de programmes bureautiques commencera à diminuer avec le temps. C’est le cheval sur lequel Google parie et, dans une moindre mesure, Apple également.

  • Créer quelque chose de bien aurait des implémentations radicalement différentes pour chaque système d’exploitation, de sorte que le kit d’outils lui-même ne serait pas très portable.

    Si vous y réfléchissez, le Web est le seul substrat réellement commun sur lequel nous pouvons développer ce type d’infrastructure de manière multi-plateforme. WPF est incroyablement différent du sharepoint vue de l’architecture par rapport au code WinAPorms / straight WinAPI. Adapter quelque chose comme cela à chaque système d’exploitation nécessiterait beaucoup de plomberie très différente pour chaque système d’exploitation si vous deviez prier pour faire quelque chose qui fonctionne bien. (Les applications Web ne sont pas très rapides, remarquez, mais elles s’améliorent).

  • Regarder et sentir va toujours être un peu un problème.

    À qui ressemble-t-il? Essayez-vous d’adapter l’interface utilisateur au chrome de l’OS afin qu’elle soit “native”, ou faites-vous quelque chose comme Swing il y a des années et développez-vous des applications qui ont un aspect distinct? (Ugh, c’était un accident de train…) Et si vous choisissez d’adapter l’interface utilisateur à l’apparence de chaque système d’exploitation, vous pouvez avoir toutes sortes de problèmes de mesure et de conception.

Novell a une implémentation open source de Silverlight, avec un excellent support pour XAML, appelé Moonlight:

http://en.wikipedia.org/wiki/Moonlight_(runtime)

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