mirror of https://github.com/bsnes-emu/bsnes.git
60 lines
1.6 KiB
C++
60 lines
1.6 KiB
C++
#if defined(Hiro_LineEdit)
|
|
|
|
namespace hiro {
|
|
|
|
static auto LineEdit_activate(GtkEntry*, pLineEdit* p) -> void {
|
|
p->self().doActivate();
|
|
}
|
|
|
|
static auto LineEdit_change(GtkEditable*, pLineEdit* p) -> void {
|
|
p->state().text = gtk_entry_get_text(GTK_ENTRY(p->gtkWidget));
|
|
if(!p->locked()) p->self().doChange();
|
|
}
|
|
|
|
auto pLineEdit::construct() -> void {
|
|
gtkWidget = gtk_entry_new();
|
|
|
|
setBackgroundColor(state().backgroundColor);
|
|
setEditable(state().editable);
|
|
setForegroundColor(state().foregroundColor);
|
|
setText(state().text);
|
|
|
|
g_signal_connect(G_OBJECT(gtkWidget), "activate", G_CALLBACK(LineEdit_activate), (gpointer)this);
|
|
g_signal_connect(G_OBJECT(gtkWidget), "changed", G_CALLBACK(LineEdit_change), (gpointer)this);
|
|
|
|
pWidget::construct();
|
|
}
|
|
|
|
auto pLineEdit::destruct() -> void {
|
|
gtk_widget_destroy(gtkWidget);
|
|
}
|
|
|
|
auto pLineEdit::minimumSize() const -> Size {
|
|
Size size = pFont::size(self().font(true), state().text);
|
|
return {size.width() + 10, size.height() + 10};
|
|
}
|
|
|
|
auto pLineEdit::setBackgroundColor(Color color) -> void {
|
|
GdkColor gdkColor = CreateColor(color);
|
|
gtk_widget_modify_base(gtkWidget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
|
|
}
|
|
|
|
auto pLineEdit::setEditable(bool editable) -> void {
|
|
gtk_editable_set_editable(GTK_EDITABLE(gtkWidget), editable);
|
|
}
|
|
|
|
auto pLineEdit::setForegroundColor(Color color) -> void {
|
|
GdkColor gdkColor = CreateColor(color);
|
|
gtk_widget_modify_text(gtkWidget, GTK_STATE_NORMAL, color ? &gdkColor : nullptr);
|
|
}
|
|
|
|
auto pLineEdit::setText(const string& text) -> void {
|
|
lock();
|
|
gtk_entry_set_text(GTK_ENTRY(gtkWidget), text);
|
|
unlock();
|
|
}
|
|
|
|
}
|
|
|
|
#endif
|