Frage

Wenn wir von HTML/CSS etwas gelernt haben, leisten deklarative Sprachen (wie XML) gute Arbeit, um Benutzeroberflächen zu beschreiben, weil:

  1. Es ist einfach, Code -Präprozessoren zu erstellen, die den Code effektiv verhindern können.
  2. Der Code befindet sich in einem gut definierten gut strukturierten (idealerweise) Format, sodass es leicht analysiert zu werden.
  3. Die Technologie, um eine XML -basierte Quelldatei effektiv zu analysieren oder zu kriechen, gibt es bereits.
  4. Der UIS -Skriptcode wird viel einfacher und leichter zu verstehen.
  5. Es ist einfach genug, dass Designer die Schnittstelle selbst entwerfen können.
  6. Programmierer saugen an der Erstellung von Benutzeroberflächen und sollten für Designer einfach genug gemacht werden.

Ich habe kürzlich einen Blick auf das Fleisch einer WPF -Anwendung (dh das XAML) angesehen und es sieht dem in HTML verwendeten deklarativen Sprachstil überraschend vertraut aus.

Der aktuelle Stand der Desktop -UI -Entwicklung ist weitgehend fraktionalisiert, sonst würde es in der Domäne des grafischen Benutzeroberflächendesigns nicht so viel doppelte Anstrengungen geben (dh GTK, XUL, QT, WinForms, WPF usw.).

Allein für Python gibt es 45 GUI -Plattformen

Was sind einige Open -Source -GUIs, die diese Eigenschaften darstellen:

  • standardisiert
  • Plattformunabhängig
  • deklarative Markup -Sprache
  • Sprache agnostisch

WPF, oder genauer gesagt, XAML scheint ein ziemlich wahrscheinlicher Schritt in die richtige Richtung zu sein.

Aktualisieren:

Vielen Dank für die Info, halten Sie es so. Hier sind die Optionen, die ich aus den Kommentaren und Antworten gesammelt habe.

Gladexml

  • Editor: Glade Interface Designer
  • OS -Plattformen: alle
  • GUI -Plattform: Gtk+
  • Sprachen: C (libglade), C ++, C# (Glade#), Python, Ada, Pike, Perl, Php, Eiffel, Ruby

XRC (XML -Ressource)

XML-basierte Formate, die entweder nicht frei, nicht plattformübergreifend oder sprachspezifisch sind

Xul

  • Editor: Jeder grundlegende Texteditor
  • Betriebssystemplattformen: Jedes Betriebssystem aus dem Ausführen eines Browsers, das XUL unterstützt
  • GUI -Plattform: Gecko Engine?
  • Sprachen: C ++, Python, Rubin als Pluginsprachen nicht Grundsprachen

Hinweis: Ich bin mir nicht sicher, ob Xul in dieser Liste erwähnt wird, da es weniger eine Desktop-GUI-Sprache und eine mehr von Make-Webapps-Run-on-the-Desktop-Sprache ist. Außerdem müssen ein Browser ausgeführt werden. Dh es ist 'DHTML für den Desktop'.

Cookswing

Xaml (Mondlicht)

  • Editor: Monode entwickelt
  • OS -Plattformen: Nur Linux und andere UNIX/X11 -basierte OSS
  • GUI -Plattformen: Gtk+
  • Sprachen: .net

HINWEIS: XAML ist kein reines Open -Source -Format, da Microsoft seine Nutzungsbedingungen einschließlich des Rechts, die Begriffe jederzeit zu ändern, steuert. Moonlight kann nicht legal auf Windows oder Mac ausgeführt werden. Darüber hinaus ist Novell die einzige Plattform, die von rechtlichen Schritten befreit ist. Sieh dir das an für eine vollständige Beschreibung dessen, was ich meine. XAML ist auch kein ECMA -Standard wie C#, verwaltet C ++ und die CLR.

UPDATE: Die Frage wurde von "Gibt es eine Open -Source -Alternative zu WPF? Weil die ursprüngliche Frage falsch war und sie saugte. Die Richtung dieser Frage hat die Richtung geändert, um mit der neuen Eingabe übereinzustimmen. Ich entschuldige mich an Die Leute, die antworteten, bevor es sich änderte.

War es hilfreich?

Lösung

QT entwickelt QML, was XAML außer in JSON sehr ähnlich aussieht. Es ist als Vorschau für die aktuelle Version erhältlich und in Snapshots der nächsten Version erhältlich.

Hier ist ein kleiner Ausschnitt von 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 }
               }
           }
       }
   }
}

Andere Tipps

  • Das Web nimmt den größten Teil des Dampfes von Desktop -Apps weg.

    Ich denke, der große Grund ist, dass sich jeder gerade so auf das Web konzentriert. HTML5 wird in dem, was das Web tun kann, ein Quantensprung nach vorne sein. Mit schnellen JavaScript -Dolmetschern und fähigen Browsern wird die Notwendigkeit eines Desktop -Programms im Laufe der Zeit nachlassen. Das ist das Pferd, auf das Google setzt, und in viel geringerem Maße auch Apple.

  • Etwas Gutes zu erstellen, hätte für jedes Betriebssystem radikal unterschiedliche Implementierungen, sodass das Basis -Toolkit selbst nicht sehr tragbar wäre.

    Wenn Sie darüber nachdenken, ist das Web das einzige wirklich häufige Substrat, das wir haben, um diese Art von Infrastruktur auf plattformübergreifende Weise zu entwickeln. WPF unterscheidet sich unglaublich von einer architektonischen Perspektive im Vergleich zu WinForms/Straight Winapi Code. Das Anpassung an jedes Betriebssystem würde für jedes Betriebssystem viel sehr unterschiedlich ausgebaut, wenn Sie das Gebet haben würden, etwas zu machen, das gut abschneidet. (Nicht, dass Web -Apps sehr schnell sind, wohlgemerkt, aber sie werden besser).

  • Schauen und Gefühl werden immer ein Problem sein.

    Wessen Look und Gefühl benutzen Sie? Versuchen Sie, die Benutzeroberfläche an das OS -Chrome anzupassen, damit es "nativ" aussieht, oder tust du so etwas wie Swing vor Jahren und entwickelt Apps, die sich von allem unterscheiden, dass es da draußen unterscheidet? (Ugh, das war ein Zugunglück ...) Und wenn Sie die Benutzeroberfläche an das Erscheinungsbild und das Gefühl jedes Betriebssystems anpassen möchten, haben Sie möglicherweise alle möglichen Mess- und Designprobleme.

Novell verfügt über eine Open -Source -Implementierung von Silverlight mit großer Unterstützung für XAML namens Moonlight:

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

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top