2016-06-04 3 views
2

Dies ist etwas, was ich versucht habe herauszufinden, ob es möglich ist und wie es geht. Ich würde gerne in der Lage sein, ein Gtk + Control/Widget in eine Webkit-Ansicht einzubetten, die als Teil der Webseite integriert ist. Zum Beispiel hatte ich gehofft, dass es möglich sein könnte, ein bestimmtes Steuerelement in der Mitte einer programmatisch generierten Webseite zu integrieren, die in eine Webkit-Instanz in einer Gtk + -Anwendung geladen wird. Ich würde es gerne zu einem Teil des DOM machen, wenn möglich.Eingebettetes Widget in die Webkit-Ansicht einbetten

Meine Absicht ist es, das Webview als Grundlage für einige Teile der Benutzeroberfläche zu verwenden, aber es gibt einige spezifische Steuerelemente, die die ursprünglichen Gtk + -Ionen sein mussten.

Beim Umgang mit Steuerelementen in Formularen tritt beispielsweise eines von zwei Dingen auf: Entweder gibt Webkit-gtk sie explizit wie die Gtk + -Steuerelemente aus oder verwendet tatsächliche Gtk + -Steuerelemente und bettet sie ein. Wenn die Realität der zweite Fall ist, dann könnte es auch leicht sein, dies mit anderen Kontrollen zu tun.

Ich entwickle die Anwendung in C# (Mono) mit GTK #, aber ich hoffe auch, dass wenn es möglich ist, es direkt in Gtk + zu tun, es eventuell möglich ist, in GTK # zu tun.

Antwort

0

Sie können in Broadway suchen. Dies ist das Web-Back-End für GTK + und verwendet HTML5 zum Anzeigen von GTK + -Widgets. Möglicherweise müssen Sie GTK + vollständig in Ihrer Webseite verwenden, aber dies scheint die einzige Möglichkeit zu sein, eine Webseite mit GTK + -Elementen zu erstellen.

+0

Das besiegt tatsächlich den Zweck. Wenn ich Gtk + nur auf meiner Seite verwenden darf, gibt es keinen zusätzlichen Nutzen bei der Verwendung, im Gegenteil, da die erhöhte Latenz und Leistungsverschlechterung von den hinzugefügten Verarbeitungsschichten es nutzlos machen würde. Ich kann sehen, dass Broadway in einigen Fällen nützlich ist, aber nicht in diesem Fall. – Joaommp

+0

Wie tief haben Sie es untersucht? Ich sollte das in meiner Antwort klarstellen, aber ich habe es nicht im Detail betrachtet, daher kann ich nicht sicher sein, dass Sie nur GTK + auf der Seite verwenden können. Ich werde klären, dass ich nicht weiß und sehe, ob ich auch mehr Details finde. – oldtechaa

+1

Ein Teil meiner Antwort basierte auf Ihrem, aber nach dem Testen bewies es meine Annahme, dass es keinen Nutzen gab, da eine einfache Schnittstelle mit einem sehr einfachen Hauptfenster und einem Dialog langsam zu einem Crawl auf einem i7-6700T mit 32GB war RAM und Reaktionsfähigkeit waren nahe Null. – Joaommp

0

Dies war früher in WebKitGTK 1.x möglich, aber seit WebKitGTK Multiprozess wurde, wurde die Fähigkeit entfernt.

Sie können jedoch Glück haben, da GTK # recht alte Versionen von Bibliotheken verwendet. Ich kann nicht sagen, welche Version von WebKitGTK Sie verwenden, aber wenn es das Signal create-plugin-widget hat, dann sollten Sie in der Lage sein, dies zu tun.

Ich habe dieses Signal noch nie benutzt, aber ich glaube, es funktioniert folgendermaßen: Sie fügen einen <object> Tag in Ihr HTML ein, und dann wird das Signal ausgegeben, wenn das Webview Ihr Widget einbetten muss. Im Signalhandler erstellen Sie Ihr Widget und übergeben es als Rückgabewert des Signalhandlers.

+0

Ich konnte das Signal abfangen, aber nichts dagegen tun, da es keinen korrekten Handler-Argumenttyp zur Verfügung stellt. Es wendet System.EventArgs an, selbst wenn ich versuche, 'm_viewWelcome.AddSignalHandler (" create-plugin-widget ", neues GLib.GSignalHandler (onCreatePluginWidget), typeof (GLib.GSignalArgs)) zu verwenden;' Der Fehler, den ich bekomme, ist: 'Ausnahme in Gtk # Callback-Delegat Hinweis: Anwendungen können GLib.ExceptionManager.UnhandledException verwenden, um die Ausnahme zu behandeln. System.Exception: Unbekannter Typ GHashTable' – Joaommp

Verwandte Themen