Kann keine glade-XML-Datei mit haskell verwenden

7

Ich bin mir nicht sicher, ob ich hallo sagen soll oder nicht, dies ist mein erster Beitrag hier.

Wie auch immer, ich folge dem Tutorial von der gtk2hs Website . Der Code kompiliert korrekt, aber wenn ich versuche, es auszuführen, erhalte ich diesen Fehler.

%Vor%

Das ist meine Lichtdatei.

%Vor%

Die Datei glade befindet sich im selben Verzeichnis wie mein Quellcode. Der Quellcode ist eine exakte Kopie aus dem Tutorial. Ich habe noch nie zuvor mit der Lichtung gearbeitet, also habe ich keine Ahnung, was falsch läuft.

Ich musste ghc von 7,6 auf 7,4.2 herabstufen. Ich benutze glade 3.14.1, alle anderen Pakete wurden via cabal installiert, so dass sie auf ihrer aktuellen Version sind.

Wenn ich die Schnittstelle mit glade-interface vertausche, klagt sie am Anfang und am Ende immer noch.

%Vor%

Und wenn alle Objekt -Tags mit Widget geändert werden, bekomme ich das

%Vor%

Ich bekomme dadurch weniger Fehler, aber es funktioniert immer noch nicht.

    
tokoro 08.11.2012, 17:23
quelle

1 Antwort

19

Das Problem war, dass gtk2hs gtk3 nicht unterstützt, und die Datei, die ich erstellte, war für gtk3.

Glade kann entweder eine libglade-Datei oder eine gtkbuilder-Datei erzeugen. Beide sind XML-Dateien und der Hauptunterschied zwischen ihnen ist, dass der erste mit <glade-interface> beginnt und der spätere mit <interface> beginnt. Auch in gtkbuilder-Dateien wird das <object> -Tag anstelle des <widget> -Tags verwendet.

Das Paket Graphics.UI.Gtk.Glade verwendet die libglade-Dateien, und das Problem ist, dass diese veraltet und veraltet sind.

Auf der Glade-Downloadseite stehen zwei Versionen zur Verfügung. Der neuere von ihnen erzeugt gtkbuilders, die mit gtk3 verwendet werden sollen, aber da gtk2hs gtk3 nicht unterstützt, müssen Sie Version 3.8 herunterladen, die sowohl libglade- als auch gtkbuilder-Dateien für gtk2 generiert.

Am besten verwenden Sie keine libglade-Dateien und verwenden stattdessen die gtkbuilder-Dateien. Dazu müssen Sie Graphics.UI.Gtk.Builder anstelle von Graphics.UI.Gtk.Glade

importieren

Ich fand dieses Tutorial , das verwendet wird von gtkbuilder anstelle von libglade.

Dieses Programm erstellt ein Fenster mit einer Schaltfläche, und jedes Mal, wenn Sie auf die Schaltfläche klicken, erhalten Sie eine "Hallo Welt" auf Ihrem Terminal, bis das Fenster geschlossen ist.

%Vor%

Dies zieht die GUI aus der windowbuilder.glade Datei. Ich habe diese Datei mit glade-3 erstellt. Hier ist es.

%Vor%

Ein weiterer guter Grund, zu gtkbuilder-Dateien zu wechseln, ist, dass das Haskell-Glade-Paket nicht mit ghc & gt; = 7.6 kompiliert wird.

    
tokoro 09.11.2012, 01:25
quelle

Tags und Links