49 lines
1.2 KiB
C++
49 lines
1.2 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();
|
|
_changedHandlerId = g_signal_connect(_widget, "changed", G_CALLBACK(changedCallback), this);
|
|
}
|
|
|
|
Entry::~Entry() {
|
|
g_signal_handler_disconnect(_widget, _changedHandlerId);
|
|
}
|
|
|
|
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);
|
|
}
|
|
|
|
}
|