2015-09-11 8 views
5

Su Ubuntu Linux, posso usare l'applicazione Glade per creare una finestra di dialogo Hello World. Ora come posso ottenere il linguaggio di programmazione D per visualizzarlo?Come mostrare Hello World con Glade/GtkD e il linguaggio di programmazione D

+0

se l'hai risolto da solo, non dimenticare di inviare la risposta anche qui (puoi rispondere alla tua stessa domanda) in modo che anche le persone in cerca possano vederlo. –

risposta

11
  1. Installare il DMD compilatore che compila la lingua D sul computer Mac, Linux o Windows. È possibile ottenere maggiori informazioni su questo here.
  2. Installa il Designer interfaccia Glade sul tuo computer Mac, Linux o Windows. È possibile ottenere Glade su Ubuntu Linux abbastanza facilmente con sudo apt-get install glade, ma ulteriori informazioni sull'installazione su varie altre piattaforme sono here.
  3. Installa GTKd sul tuo computer Mac, Linux o Windows. Questo non è facile. Avrai bisogno di iniziare con la documentazione allo gtkd.org e poi interagire nello DLang.org Learn forum per ulteriore assistenza se necessario.
  4. Aperto Glade e creare una nuova finestra con un'etichetta sopra dicendo Hello World.

nota che la tavolozza strumenti a Glade mostra un widget finestra e un widget ApplicationWindow. Poiché non stiamo disegnando alcun menu, assicurati di utilizzare il widget Window anziché il ApplicationWidget. Se non lo fai, riceverai avvertimenti durante l'esecuzione dell'applicazione, parlando di alcune chiamate di menu mancanti.

              Salva come hello.glade.

  1. Aprire il hello.glade file in un editor di testo e cercare una linea che è simile a questo:

            <object class="GtkWindow" id="window1">

              Scrivi su un foglio di carta l'attributo id.

  1. Creare un hello.d script nella stessa directory di questo hello.glade file di e modificate le seguenti contenuti, modificando la Window1 a tutto ciò che è stato il tuo id annotato in precedenza.
import gtk.Builder; 
import gtk.Main; 
import gtk.Widget; 
import gtk.Window; 
import std.stdio; 

int main (string[] args) 
{ 
    Main.init(args); 
    Builder b = new Builder(); 
    b.addFromFile("hello.glade"); 
    Window w = cast(Window)b.getObject("window1"); 
    w.addOnHide(delegate void(Widget aux){ Main.quit(); }); 
    w.showAll(); 
    Main.run(); 
    return 0; 
} 
  1. Compilazione è difficile. Su Ubuntu Linux, ho dovuto creare una dichiarazione simile alla seguente. Potrebbe essere necessario interagire con lo dlang.org Learn forums per la propria piattaforma specifica.
# dmd hello.d `pkg-config --cflags --libs gtkd3` 
  1. Una volta compilato, è possibile eseguire il file eseguibile D per visualizzare la finestra Ciao Mondo. Su Ubuntu Linux, ho semplicemente fatto:

              # ./hello

  1. Si noti che quando si vede la finestra e chiude, è possibile ricevere un po ' avvertimenti su Linux. (Su altre piattaforme, questo può variare.) Stavo ricevendo un avviso su "Impossibile connettersi al bus di accessibilità - connessione rifiutata". La correzione almeno su Linux è quello di aggiungere questo al tuo ~/.bashrc sceneggiatura in fondo:

              export NO_AT_BRIDGE=1

              Ora, quando apri il prompt dei comandi ed esegui nuovamente il comando D compilato "ciao",               non mostrerà quell'errore.

              In caso di errori per quanto riguarda i menu, quindi è stato utilizzato un ApplicationWindow widget di invece di un widget               Finestra, e sarà necessario passare che nel Glade.

Aggiunta di pulsanti & Segnali

  1. Il modo in cui lo faccio è fare clic su un widget nel Glade, fare clic segnali, trovare l'evento che voglio aggiungere, come ad esempio cliccato, e quindi nella colonna Handler, digitare una funzione. Ad esempio, su un pulsante1, digitare onButton1Clicked. Salva il file.

  2. Ora, nel codice sorgente D, subito dopo aver creato l'oggetto Window, aggiungere questo codice:

              b.connectSignals(null);

              ... dove b è la variabile Builder.

  1. Nel codice sorgente D, aggiungere una funzione per questo segnale. Per esempio, ho fatto:
extern(C) void onButton1Clicked() 
{ 
    writeln("got here"); 
    Main.quit(); 
} 

              nota che in questo caso, è necessario l'extern (C).

  1. Ricompila ed esegui l'applicazione. Vedrai che esegue automaticamente la tua nuova funzione per quel clic del pulsante.