AutoCatGnome/gtkpp/Entry.cpp

45 lines
1.1 KiB
C++

//
// Created by selim on 10.05.2022.
//
#include "Entry.h"
#include <iostream>
namespace gtkpp {
void changedCallback(GtkEntry*, Entry* entry) {
entry->_signalChanged.emit();
}
Entry::Entry() : Widget() {
_widget = gtk_entry_new();
g_signal_connect(_widget, "changed", G_CALLBACK(changedCallback), this);
}
void Entry::setPlaceholder(const std::string &placeholder) {
gtk_entry_set_placeholder_text(GTK_ENTRY(_widget), placeholder.c_str());
}
void Entry::setPurpose(GtkInputPurpose purpose) {
gtk_entry_set_input_purpose(GTK_ENTRY(_widget), purpose);
}
void Entry::setVisibility(bool visibility) {
gtk_entry_set_visibility(GTK_ENTRY(_widget), visibility);
}
void Entry::onChanged(const std::function<void()>& callback) {
_signalChanged.connect(callback);
}
int Entry::textLength() const {
return gtk_entry_get_text_length(GTK_ENTRY(_widget));
}
std::string Entry::text() const {
auto buffer = gtk_entry_get_buffer(GTK_ENTRY(_widget));
return gtk_entry_buffer_get_text(buffer);
}
}