web-dev-qa-db-fra.com

Quelles sont les alternatives Open Source à WPF / XAML?

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

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

J'ai récemment jeté un coup d'œil à la viande d'une application WPF (c'est-à-dire le XAML) et elle semble étonnamment familière au style de langage déclaratif utilisé en HTML.

L'état actuel du développement de l'interface utilisateur de bureau est largement fractionné, sinon il n'y aurait pas autant d'efforts dupliqués dans le domaine de la conception d'interfaces graphiques (IE. GTK, XUL, Qt, Winforms, WPF, etc.).

Il existe 45 plateformes GUI pour Python seul

Quels sont les GUI Open Source qui représentent ces caractéristiques:

  • standardisé
  • indépendant de la plateforme
  • langage de balisage déclaratif
  • langue agnostique

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

Mise à jour:

Merci beaucoup pour l'info, continuez à venir. Voici les options que j'ai recueillies à partir des commentaires et des réponses.

GladeXML

  • Editeur: Glade Interface Designer
  • Plateformes OS: toutes
  • Plateforme GUI: GTK +
  • Langages: C (libglade), C++, C # (Glade #), Python, Ada, Pike, Perl, PHP, Eiffel, Ruby

XRC (ressource XML)

Formats basés sur XML qui ne sont ni gratuits, ni multiplateformes, ni spécifiques à la langue

XUL

  • Éditeur: tout éditeur de texte de base
  • Plateformes de système d'exploitation: tout système d'exploitation exécutant un navigateur prenant en charge XUL
  • Plateforme GUI: Gecko Engine?
  • Langages: C++, Python, Ruby comme langages de plugin et non comme langages de base

Remarque: Je ne suis pas sûr que XUL mérite d'être mentionné dans cette liste, car il s'agit moins d'un langage GUI de bureau et plus d'un langage make-webapps-run-on-the-desktop. De plus, il nécessite un navigateur pour fonctionner. IE, c'est "DHTML pour le bureau".

CookSwing

XAML (Moonlight)

  • Editeur: MonoDevelop
  • Plateformes d'OS: Linux et autres OS basés sur Unix/X11 uniquement
  • Plateformes GUI: GTK +
  • Langues: .NET

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

Mise à jour: la question a été modifiée de "Existe-t-il une alternative open source à WPF? Parce que la question d'origine était erronée, et elle était nulle. La direction de cette question a changé de direction pour correspondre à aligner avec la nouvelle entrée. Mes excuses aux personnes qui ont répondu avant qu'il ne change.

66
Evan Plaice

Qt développe QML, qui ressemble beaucoup à XAML sauf en JSON. Il est disponible sous forme d'aperçu construit par rapport à la version actuelle et est disponible dans des 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 }
               }
           }
       }
   }
}
14
Thomas
  • Le Web retire la majeure partie de Steam 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 être un bond en avant dans ce que le Web peut faire. Avec des interprètes JavaScript rapides et des navigateurs capables, le besoin de programmes de bureau commencera à diminuer avec le temps. C'est le cheval sur lequel Google parie, et dans une bien moindre mesure, Apple également.

  • Créer quelque chose de bien aurait des implémentations radicalement différentes pour chaque système d'exploitation, donc la boîte à outils de base elle-même ne serait pas très portable.

    Si vous y réfléchissez, le Web est le seul substrat vraiment commun sur lequel nous pouvons développer ce type d'infrastructure de manière multiplateforme. WPF est incroyablement différent du point de vue architectural par rapport au code WinForms/WinAPI direct. L'adaptation de quelque chose comme ça à chaque OS nécessiterait beaucoup de plomberie très différente pour chaque OS si vous deviez prier pour faire quelque chose qui fonctionnait bien. (Pas que les applications Web soient très rapides, faites attention, mais elles s'améliorent).

  • L'apparence sera toujours un problème.

    Dont l'apparence utilisez-vous? Essayez-vous d'adapter l'interface utilisateur au système d'exploitation chrome pour qu'il ait l'air "natif", ou faites-vous quelque chose comme Swing l'a fait il y a des années et développez des applications qui sont distinctement différentes de tout ce qui existe? (( Ugh, c'était une épave 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.

7
Dave Markle

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

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

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

3
code4life