Domanda

Se abbiamo imparato qualcosa da HTML / CSS è che, linguaggi dichiarativi (come XML) fanno un buon lavoro di descrivere interfacce utente perché:

  1. E 'facile preprocessore di codice build che possono template il codice in modo efficace.
  2. Il codice è in un formato ben definito e ben strutturato (in teoria), quindi è facile da analizzare.
  3. La tecnologia in modo efficace analizzare o strisciare di un file sorgente basato su XML esiste già.
  4. Il codice di interfacce utente script diventa molto più semplice e più facile da capire.
  5. E 'abbastanza semplice che i progettisti sono in grado di progettare l'interfaccia stessi.
  6. I programmatori succhiano alla creazione di interfacce utente in modo da dovrebbe essere reso abbastanza facile per i progettisti.

Recentemente ho preso uno sguardo alla carne di un'applicazione WPF (es. Il codice XAML) e sembra sorprendentemente familiare allo stile di linguaggio dichiarativo utilizzato in HTML.

Lo stato attuale di sviluppo del desktop UI è in gran parte frazionato, sforzo altrimenti non ci sarebbe tanto duplicati nel campo del design di interfaccia utente grafica (IE. GTK, XUL, Qt, WinForms, WPF, ecc).

Ci sono 45 piattaforme GUI per Python solo

Quali sono alcuni di Fonte GUI aperta che rappresentano queste caratteristiche:

  • standardizzato
  • indipendente dalla piattaforma
  • linguaggio di markup dichiarativo
  • lingua agnostico

WPF, o più specificamente XAML sembra un passo abbastanza probabile nella direzione giusta.

Aggiornamento:

Grazie mille per le informazioni, tenerlo comin'. Ecco sono le opzioni che ho raccolto dai commenti e le risposte.

GladeXML

  • Editor: Glade Interface Designer
  • piattaforme OS: Tutti i
  • GUI Piattaforma: GTK +
  • Lingue: C (libglade), C ++, C # (Glade #), Python, Ada, Pike, Perl, PHP, Eiffel, Rubino

XRC (XML Resource)

formati basati su XML che non sono né libero, non cross-platform, o specifici lingua

XUL

  • Editor: qualsiasi editor di testo di base
  • piattaforme OS: Qualsiasi sistema operativo in esecuzione di un browser che supporti XUL
  • GUI Piattaforma:? Gecko motore
  • Lingue: C ++, Python, Ruby come lingue plugin non lingue di base

Nota: Non sono sicuro se XUL merita menzionare in questa lista perché è meno di un linguaggio GUI desktop e più di una lingua make-webapps-run-on-the-desktop. Inoltre, richiede un browser per l'esecuzione. IE, è 'DHTML per il desktop.'

CookSwing

XAML (Moonlight)

  • Editor: MonoDevelop
  • piattaforme OS: Linux e altri sistemi operativi basati su Unix / X11 solo
  • Piattaforme GUI: GTK +
  • Lingue: .NET

Nota: XAML non è un formato open source puro perché Microsoft controlla le sue condizioni di utilizzo, tra cui il diritto di modificare i termini in qualsiasi momento. Moonlight non può giuridicamente essere fatto funzionare su Windows o Mac. Inoltre, l'unica piattaforma che è esente da azioni legali è Novell. Vedere questo per un descrizione completa di ciò che intendo. XAML è, inoltre, non uno standard ECMA come C #, Managed C ++, e il CLR.

Aggiornamento:? La domanda è stata modificata da "Esiste un'alternativa open source a WPF perché la domanda iniziale era sbagliato, e faceva schifo La direzione di questa domanda ha cambiato direzione per abbinare fino ad allinearsi con il. nuovo input. le mie scuse alle persone che hanno risposto prima di essere cambiato.

È stato utile?

Soluzione

Qt sta sviluppando QML, che assomiglia molto a XAML se non in JSON. E 'disponibile in anteprima costruito contro la versione attuale, ed è disponibile in istantanee della versione successiva.

Ecco un piccolo frammento da http: // doc .qt.nokia.com / 4,7-snapshot / dichiarativa-ui-componenti-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 }
               }
           }
       }
   }
}

Altri suggerimenti

  • Il Web sta prendendo la maggior parte del vapore lontano da applicazioni desktop come è.

    Credo che la ragione principale è che tutti è così concentrata sul web in questo momento. HTML5 sarà un salto in avanti in quello che il web può fare. Con interpreti JavaScript veloci e browser capaci, la necessità di un programmi desktop inizierà a calare nel corso del tempo. Questo è il cavallo che Google sta scommettendo su, e in misura molto minore, Apple pure.

  • La creazione di qualcosa di buono avrebbe implementazioni radicalmente diverse per ogni sistema operativo, in modo che il toolkit base stessa non sarebbe molto portabile.

    Se ci pensate, il Web è l'unico substrato molto comune che abbiamo su cui sviluppare questo tipo di infrastrutture in maniera cross-platform. WPF è incredibilmente diversa dal punto di vista architettonico vs WinForms / code WinAPI dritto. Adattamento qualcosa di simile per ogni sistema operativo avrebbe preso una grande quantità di molto diverso impianto idraulico per ogni sistema operativo, se si dovesse avere una preghiera di fare qualcosa che ha eseguito bene. (Non che le applicazioni web sono molto veloci, ti dispiacerebbe, ma stanno migliorando).

  • aspetto grafico sta andando sempre essere un po 'di un problema.

    La cui aspetto si usa? Non si tenta di adattare l'interfaccia utente per il sistema operativo Chrome in modo che appaia "nativo", o si fa una cosa del genere swing did anni fa e sviluppare applicazioni che sembrano tipicamente diverso da tutto là fuori? (Ugh, che era un disastro ...) E se si sceglie di adattare l'interfaccia utente per il look di ogni sistema operativo e la sensazione, si possono avere tutti i tipi di problemi di misurazione e di design.

Novell ha un'implementazione open source di Silverlight, con grande supporto per XAML, chiamato Moonlight:

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

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top