diff --git a/radiant/dialog.cpp b/radiant/dialog.cpp index 0240e675..c3ef12bf 100644 --- a/radiant/dialog.cpp +++ b/radiant/dialog.cpp @@ -170,18 +170,31 @@ void IntRadioExport(GtkRadioButton& widget, const IntImportCallback& importCallb } typedef ImportExport IntRadioImportExport; +template +class StringFromType +{ + StringOutputStream value; +public: + StringFromType(const Type& type) + { + value << Formatter(type); + } + operator const char*() const + { + return value.c_str(); + } +}; + +typedef StringFromType LocaleToUTF8; +typedef StringFromType UTF8ToLocale; void TextEntryImport(GtkEntry& widget, const char* text) { - StringOutputStream value(64); - value << ConvertLocaleToUTF8(text); - gtk_entry_set_text(&widget, value.c_str()); + gtk_entry_set_text(&widget, LocaleToUTF8(text)); } void TextEntryExport(GtkEntry& widget, const StringImportCallback& importCallback) { - StringOutputStream value(64); - value << ConvertUTF8ToLocale(gtk_entry_get_text(&widget)); - importCallback(value.c_str()); + importCallback(UTF8ToLocale(gtk_entry_get_text(&widget))); } typedef ImportExport TextEntryImportExport;