Wie füge ich ein benutzerdefiniertes gtkmm-Widget zu glade hinzu?

8

Ich schreibe ein benutzerdefiniertes Widget mit gtkmm , und ich konnte es nicht erreichen Arbeit in der Lichtung. (Das Widget selbst ist kaum funktional; es funktioniert, und ich möchte es in Glade arbeiten, bevor Sie mit dem nächsten Schritt fortfahren.) Glade findet das Widget, aber wenn ich versuche, es in einem Fenster zu platzieren, stürzt Glade.

Basierend auf Hinweisen, die ich während verschiedener Suchen gefunden habe, habe ich dieses Codebeispiel der Hauptquelldatei hinzugefügt:

%Vor%

Ich habe den Verdacht, dass der obige Code nicht richtig ist, aber ich kann keine gtkmm- oder glade-Dokumentation darüber finden, was diese Funktion tun soll.

Basierend auf der Katalogdokumentation für Glade habe ich das folgende XML erstellt:

%Vor%

Das ist im Quellverzeichnis meines Widgets mit dem Namen gtk-date-chooser.xml . Ich starte Lichtung in diesem Verzeichnis mit:

%Vor%

Wenn das Fenster erscheint, erscheint mein Widget in einer speziellen "Date" -Gruppe, wie im Katalog angegeben, mit einem Standard-Icon. Wenn ich ein Fenster platziere und dann das Widget für die Platzierung im Fenster auswähle, stürzt die Lichtung ab. Ich sehe Folgendes auf der Konsole:

%Vor%

Es scheint die Antwort auf diese (unbeantwortete) Frage zu sein könnte einen Hinweis liefern, aber ich konnte keine Antwort für diese Frage oder Hinweise finden, die mir bei meinem Problem helfen würden.

Versionen, die ich verwende:

  • Ubuntu: 12.04
  • gtkmm: 3.4.0-0ubuntu1
  • Lichtung: 3.12.0-0ubuntu1

(Ich wäre bereit, Lösungen basierend auf Stammversionen oder auf Centos 6 oder Fedora 16 zu testen.)

    
bstpierre 31.05.2012, 01:40
quelle

1 Antwort

5

Folgendes ist erforderlich, um ein benutzerdefiniertes gtkmm Widget zu Glade hinzuzufügen:

  1. mindestens eine reine benutzerdefinierte Widget-Implementierung
  2. einige Glade -bezogene Zusatzfunktionen zu den benutzerdefinierten Widgets
  3. eine Katalogdatei, die die benutzerdefinierten Widgets für Glade
  4. beschreibt
  5. Eine Bibliothek enthält die benutzerdefinierten Widgets und einige Glade-bezogene Funktionen

Das Wichtigste ist die Tatsache, dass Glade in C geschrieben ist, nicht in C ++ , also müssen wir a Plan C Widget zu einem C ++ ein und wir müssen diese Umbruchfunktion auf die GType im Zusammenhang mit dem benutzerdefinierten Widget registrieren. Es sieht ungefähr so ​​aus:

%Vor%

Sie sollten die Katalogdatei sehr sorgfältig schreiben. Namen müssen korrekt sein (besonders glade-widget-class ) für die richtige Arbeit.

%Vor%

Es gibt nichts zu tun, aber implementieren Sie die Funktion, die unser Widget als Teil der Initialisierung unserer Glade Bibliothek registriert.

%Vor%

Das Initialisieren von gtkmm Interna ist ein Muss, weil custom_widgets_glade_init von Glade aufgerufen wird, das in C nicht in geschrieben ist C ++ , so initialisiert es nur die GTK + .

Wenn Sie sich für das Thema interessieren, finden Sie meinen Blog-Beitrag hier mit mehr Details.

    
Szilárd Pfeiffer 13.06.2012, 09:30
quelle

Tags und Links