AutoCatGnome/gtkpp/Widget.cpp

61 lines
1.5 KiB
C++

//
// Created by selim on 10.05.2022.
//
#include "Widget.h"
namespace gtkpp {
void clickedCallback(GtkButton*, void* data) {
auto widget = reinterpret_cast<Widget*>(data);
widget->_signalClicked.emit();
}
void Widget::onClick(const std::function<void()> &callback) {
_signalClicked.connect(callback);
}
Widget::Widget() {
_widget = nullptr;
}
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::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);
}
}