module declgtk.components.button; import declgtk.components.component; import declgtk.queue; import declui.components.button; import gtk.Button; /** A GTK button */ class GtkButton : GtkWidgetComponent!Button, IButton { private string _text = "Untitled Label"; private void delegate() _onClick; override Button createInstance() { auto button = new Button(_text); button.addOnClicked((button) { _onClick(); executeGtkQueue(); }); return button; } override string text() { return _text; } override void text(string text) { _text = text; queue(widget => widget.setLabel(text)); } override void delegate() onClick() { return _onClick; } override void onClick(void delegate() clicked) { _onClick = clicked; } }