// // Created by selim on 10.05.2022. // #include "Widget.h" namespace gtkpp { void clickedCallback(GtkButton*, void* data) { auto widget = reinterpret_cast(data); widget->_signalClicked.emit(); } void Widget::onClick(const std::function &callback) { _signalClicked.connect(callback); } Widget::Widget() { _widget = nullptr; } Widget::Widget(GtkWidget *widget) { _widget = widget; g_signal_connect(_widget, "clicked", G_CALLBACK(clickedCallback), this); } Widget::Widget(GtkBuilder *builder, const char *id) { _widget = GTK_WIDGET(gtk_builder_get_object(builder, id)); g_signal_connect(_widget, "clicked", G_CALLBACK(clickedCallback), this); } GtkWidget *Widget::gobj() const { return _widget; } void Widget::setMargins(int margin) { gtk_widget_set_margin_top(_widget, margin); gtk_widget_set_margin_bottom(_widget, margin); gtk_widget_set_margin_start(_widget, margin); gtk_widget_set_margin_end(_widget, margin); } void Widget::setVAlign(GtkAlign align) { gtk_widget_set_valign(_widget, align); } void Widget::setVExpand(bool expand) { gtk_widget_set_vexpand(_widget, expand); } void Widget::setHExpand(bool expand) { gtk_widget_set_hexpand(_widget, expand); } void Widget::setHorizontalMargins(int margin) { gtk_widget_set_margin_start(_widget, margin); gtk_widget_set_margin_end(_widget, margin); } void Widget::setVerticalMargins(int margin) { gtk_widget_set_margin_top(_widget, margin); gtk_widget_set_margin_bottom(_widget, margin); } void Widget::setEnabled(bool enabled) { gtk_widget_set_sensitive(_widget, enabled); } void Widget::setupSignals() { g_signal_connect(_widget, "clicked", G_CALLBACK(clickedCallback), this); } void Widget::show() { gtk_widget_show(_widget); } void Widget::hide() { gtk_widget_hide(_widget); } }