void edited() { std::string data = _text.get_string_value(); gchar *converted; gsize bread, bwritten; GError *error = 0; if (_encoding != "utf8" && _encoding != "UTF8" && _encoding != "utf-8" && _encoding != "UTF-8") { converted = g_convert(data.data(), (gssize)data.length(), _encoding.c_str(), "UTF-8", &bread, &bwritten, &error); if (converted == NULL || data.length() != bread) { std::string message = base::strfmt("Data could not be converted back to %s", _encoding.c_str()); if (error) { message.append(": ").append(error->message); g_error_free(error); } _message.set_text(message); if (converted != NULL) g_free(converted); return; } _owner->assign_data(converted, bwritten); g_free(converted); _message.set_text(""); } else { _owner->assign_data(data.data(), data.length()); _message.set_text(""); } }
void set_text(const std::string &text) { _label.set_text(text); set_size(_label.get_preferred_width(), _label.get_preferred_height()); }