// valac plugin2.vala --pkg gtk+-3.0 --vapidir=~/geary/bindings/vapi --metadatadir=~/geary/bindings/metadata --pkg WebKit-3.0
class PluginTest : GLib.Object {
public static int main(string[] args) {
Gtk.init(ref args);
string HTML = """
""";
var window = new Gtk.Window();
window.destroy.connect(Gtk.main_quit);
window.set_default_size(300, 400);
var sw = new Gtk.ScrolledWindow(null, null);
var view = new WebKit.WebView();
sw.add(view);
window.add(sw);
window.show_all();
view.create_plugin_widget.connect(on_create_plugin);
view.load_string(HTML, "text/html", "UTF-8", "");
Gtk.main();
return 0;
}
public static Gtk.Widget on_create_plugin(WebKit.WebView view, string mime_type, string uri,
GLib.HashTable param) {
var widget = new PluginWidget();
return widget;
}
}
public class PluginWidget : Gtk.Box {
private bool hidden = false;
private Gtk.Label label;
public PluginWidget() {
Object(orientation: Gtk.Orientation.VERTICAL);
var add = new Gtk.Button.from_stock("gtk-add");
pack_start(add, false, false);
add.clicked.connect(on_add);
label = new Gtk.Label("Now you see me...");
pack_end(label, false, false);
var hide = new Gtk.Button.with_label("Toggle hidden");
pack_end(hide, false, false);
hide.clicked.connect(on_hide_toggle);
show_all();
}
private void on_add() {
var label = new Gtk.Label("Peek-a-boo!");
pack_start(label, false, false);
label.show();
}
private void on_hide_toggle() {
if (hidden)
label.show();
else
label.hide();
hidden = !hidden;
}
}